摘要:因為工作需要最近接觸到了,需要根據(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...
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ī)則的描述如下:
兩種方法,編寫單元測試類和手工測試,需要根據(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
摘要:是一個用于代碼質(zhì)量管理的開源平臺。支持,此處以為例。注意,此處必須保證該私鑰對應(yīng)的公鑰即必須配置在上,否則會失敗配置完成后點擊。單元測試?yán)妹钸\行虛擬機進行單元測試,然后把輸出結(jié)果數(shù)據(jù)生成報告。 摘要: Jenkins Jenkins是一款開源的持續(xù)集成工具,它的特點:易于安裝、易于配置、可擴展(自己開發(fā)插件),并且它擁有數(shù)以百計的成熟插件,這種插件式的特點提供可做任何事情的可能。 ...
摘要:是一個用于代碼質(zhì)量管理的開源平臺。支持,此處以為例。注意,此處必須保證該私鑰對應(yīng)的公鑰即必須配置在上,否則會失敗配置完成后點擊。單元測試?yán)妹钸\行虛擬機進行單元測試,然后把輸出結(jié)果數(shù)據(jù)生成報告。 摘要: Jenkins Jenkins是一款開源的持續(xù)集成工具,它的特點:易于安裝、易于配置、可擴展(自己開發(fā)插件),并且它擁有數(shù)以百計的成熟插件,這種插件式的特點提供可做任何事情的可能。 ...
摘要:特點開源的代碼質(zhì)量管控平臺,我們使用的即為。一個擴展插件,可以安裝在與等開發(fā)工具中中的使用安裝,搜索。連接的主要目的是同步分析規(guī)則質(zhì)量規(guī)則與自定義設(shè)置。結(jié)果同步顯示同部分,此部分要求為。 介紹 ? 代碼質(zhì)量管理的開源平臺,用于管理源代碼的質(zhì)量 通過插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種編程語...
摘要:下面列出了個有助于你開發(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...
閱讀 2385·2021-11-15 11:37
閱讀 2637·2021-09-23 11:21
閱讀 2966·2021-09-07 10:11
閱讀 3174·2019-08-30 15:53
閱讀 2833·2019-08-29 15:13
閱讀 1618·2019-08-26 13:57
閱讀 1111·2019-08-26 12:23
閱讀 2449·2019-08-26 11:51