成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

編寫SonarQube自定義Java和Xml規(guī)則

Imfan / 3224人閱讀

摘要:因為工作需要最近接觸到了,需要根據(jù)項目自定義和規(guī)則,由于國內(nèi)的資料實在是比較少,并且官網(wǎng)的資料全是英文的,看起來實在是頭疼,所以希望寫點資料能夠幫助到其他人。

因為工作需要最近接觸到了SonarQube,需要根據(jù)項目自定義Java和Xml規(guī)則,由于國內(nèi)的資料實在是比較少,并且官網(wǎng)的資料全是英文的,看起來實在是頭疼,所以希望寫點資料能夠幫助到其他人。
官網(wǎng)地址:https://www.sonarqube.org
在此感謝hu_qingen (古月隨筆) 和 馮澍雨 提供的幫助

基本思路

1、下載官方提供的規(guī)則插件包
2、根據(jù)需求編寫規(guī)則類
3、編譯打包
4、上傳自定義規(guī)則插件

下載地址:
1、Java自定義規(guī)則插件:
https://github.com/SonarSourc...

2、Xml自定義規(guī)則插件:
https://sonarsource.bintray.c...

開發(fā)環(huán)境

JDK1.8以上
Mavean
Jenkins

編寫方法

目前SonarQube自定義規(guī)則支持的方式有兩種: 編寫java類和編寫XPath表達(dá)式,這兩種方式都是基于AST(Abstract Syntax Tree抽象語法樹)語法結(jié)構(gòu)來實現(xiàn)的。
1、Xpath方式
需求:
從Java代碼中查找是否存在 while {}這種語法結(jié)構(gòu)

表達(dá)式代碼:
//WhileStatement[not(Statement/Block)]

步驟:
將表達(dá)式代碼放入自定義規(guī)則插件中的Expression中

這種方式需要借助第三方工具來寫表達(dá)式,并且要對Xpath語法比較熟練,我覺得并不是很強大,需要花一定的時間學(xué)習(xí)。

2、Java方式
需求:從Xml文件中查找,元素是否存在“zbc_test”這樣的內(nèi)容
步驟:
① 創(chuàng)建自定義規(guī)則類
sonar-xml-plugin/src/main/java/org/sonar/plugins/check

② 根據(jù)規(guī)則需求編寫代碼

③ 注冊新加入的規(guī)則

④ 編寫規(guī)則描述及等級分類文件,名字要和規(guī)則類中的Key相同或者規(guī)則類名相同

sonar-xmlplugin/src/main/resources/org/sonar/l10n/xml/rules/xml/DbSchemalCheck.html

sonar-xml-plugin/src/main/resources/org/sonar/l10n/xml/rules/xml/DbSchemalCheck.json

編譯打包

Eclipse選擇要編譯打包的項目文件,使用Maven進行編譯,如果編譯時不需要進行單元測試,可以跳過測試。

編譯成功

將編譯好的插件上傳至指定路徑:/sonarqube-6.3/extensions/plugins

重新啟動SonarQube,進入菜單Administration—System - Update Center 查看自定義規(guī)則插件是否安裝成功

查看自定義規(guī)則

進入SonarQube - Rules 選擇XML可以查看剛剛編寫的自定義規(guī)則:

自定義規(guī)則的描述如下:

測試自定義規(guī)則

兩種方法,編寫單元測試類和手工測試,需要根據(jù)規(guī)則的復(fù)雜程度進行選擇。
編寫Java單元測試類:
java-custom-rules/src/test/java/org/sonar/samples/java/checks/MyCustomSubscriptionRuleTest.java

編寫Xml單元測試類:

sonar-xml-plugin/src/test/java/org/sonar/plugins/xml/checks/IllegalTabCheckTest.java

手工測試:

進入Jenkins,選擇要掃描的項目進行構(gòu)建,構(gòu)建完成后點擊右側(cè)的SonarQube藍(lán)色圖標(biāo),查看掃描結(jié)果

選擇左側(cè)的選項,查看所有存在問題的文件和錯誤規(guī)則

點擊文件名查看所有掃描出來的錯誤代碼及說明

總結(jié)

剛開始以為只要寫幾個表達(dá)式,就可以很方便實現(xiàn)復(fù)雜的規(guī)則,但是摸索了幾天查了幾天的Google ,才知道還是要下載官方的自定義規(guī)則插件,然后用Java編寫自己的規(guī)則類,饒了一大圈很累。
我還下載了其他的一些SonarQube插件,通過查看代碼發(fā)現(xiàn),基本都遵守并實現(xiàn)了官方的Plugin接口

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70121.html

相關(guān)文章

  • 使用Jenkins+Sonarqueb進行動化測試代碼質(zhì)量檢測

    摘要:是一個用于代碼質(zhì)量管理的開源平臺。支持,此處以為例。注意,此處必須保證該私鑰對應(yīng)的公鑰即必須配置在上,否則會失敗配置完成后點擊。單元測試?yán)妹钸\行虛擬機進行單元測試,然后把輸出結(jié)果數(shù)據(jù)生成報告。 摘要: Jenkins Jenkins是一款開源的持續(xù)集成工具,它的特點:易于安裝、易于配置、可擴展(自己開發(fā)插件),并且它擁有數(shù)以百計的成熟插件,這種插件式的特點提供可做任何事情的可能。 ...

    ormsf 評論0 收藏0
  • 使用Jenkins+Sonarqueb進行動化測試代碼質(zhì)量檢測

    摘要:是一個用于代碼質(zhì)量管理的開源平臺。支持,此處以為例。注意,此處必須保證該私鑰對應(yīng)的公鑰即必須配置在上,否則會失敗配置完成后點擊。單元測試?yán)妹钸\行虛擬機進行單元測試,然后把輸出結(jié)果數(shù)據(jù)生成報告。 摘要: Jenkins Jenkins是一款開源的持續(xù)集成工具,它的特點:易于安裝、易于配置、可擴展(自己開發(fā)插件),并且它擁有數(shù)以百計的成熟插件,這種插件式的特點提供可做任何事情的可能。 ...

    codercao 評論0 收藏0
  • sonarlint在idea&eclipse中安裝與使用

    摘要:特點開源的代碼質(zhì)量管控平臺,我們使用的即為。一個擴展插件,可以安裝在與等開發(fā)工具中中的使用安裝,搜索。連接的主要目的是同步分析規(guī)則質(zhì)量規(guī)則與自定義設(shè)置。結(jié)果同步顯示同部分,此部分要求為。 介紹 ? 代碼質(zhì)量管理的開源平臺,用于管理源代碼的質(zhì)量 通過插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種編程語...

    kycool 評論0 收藏0
  • 每個Java程序員需要了解的8個Java開發(fā)工具

    摘要:下面列出了個有助于你開發(fā)應(yīng)用程序最好的工具。官方網(wǎng)站是一個集多功能于一身的故障排除工具。此輕便的工具有著驚人的分析能力。它提供了規(guī)則警報閾值排除和設(shè)置功能。官方網(wǎng)站以上就是每個程序員需要了解的個開發(fā)工具,希望對你有所幫助。 Java是計算機應(yīng)用程序編程語言,被廣泛用于創(chuàng)建Web應(yīng)用、服務(wù)器處理、用戶端的API開發(fā)乃至數(shù)據(jù)庫等多個領(lǐng)域。下面列出了8個有助于你開發(fā)Java應(yīng)用程序最好的Ja...

    Sleepy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<