摘要:因為工作需要最近接觸到了,需要根據項目自定義和規則,由于國內的資料實在是比較少,并且官網的資料全是英文的,看起來實在是頭疼,所以希望寫點資料能夠幫助到其他人。
基本思路因為工作需要最近接觸到了SonarQube,需要根據項目自定義Java和Xml規則,由于國內的資料實在是比較少,并且官網的資料全是英文的,看起來實在是頭疼,所以希望寫點資料能夠幫助到其他人。
官網地址:https://www.sonarqube.org
在此感謝hu_qingen (古月隨筆) 和 馮澍雨 提供的幫助
1、下載官方提供的規則插件包
2、根據需求編寫規則類
3、編譯打包
4、上傳自定義規則插件
下載地址:
1、Java自定義規則插件:
https://github.com/SonarSourc...
2、Xml自定義規則插件:
https://sonarsource.bintray.c...
JDK1.8以上
Mavean
Jenkins
目前SonarQube自定義規則支持的方式有兩種: 編寫java類和編寫XPath表達式,這兩種方式都是基于AST(Abstract Syntax Tree抽象語法樹)語法結構來實現的。
1、Xpath方式
需求:
從Java代碼中查找是否存在 while {}這種語法結構
表達式代碼:
//WhileStatement[not(Statement/Block)]
步驟:
將表達式代碼放入自定義規則插件中的Expression中
這種方式需要借助第三方工具來寫表達式,并且要對Xpath語法比較熟練,我覺得并不是很強大,需要花一定的時間學習。
2、Java方式
需求:從Xml文件中查找,元素是否存在“zbc_test”這樣的內容
步驟:
① 創建自定義規則類
sonar-xml-plugin/src/main/java/org/sonar/plugins/check
② 根據規則需求編寫代碼
③ 注冊新加入的規則
④ 編寫規則描述及等級分類文件,名字要和規則類中的Key相同或者規則類名相同
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 查看自定義規則插件是否安裝成功
查看自定義規則進入SonarQube - Rules 選擇XML可以查看剛剛編寫的自定義規則:
自定義規則的描述如下:
兩種方法,編寫單元測試類和手工測試,需要根據規則的復雜程度進行選擇。
編寫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,選擇要掃描的項目進行構建,構建完成后點擊右側的SonarQube藍色圖標,查看掃描結果
選擇左側的選項,查看所有存在問題的文件和錯誤規則
點擊文件名查看所有掃描出來的錯誤代碼及說明
總結剛開始以為只要寫幾個表達式,就可以很方便實現復雜的規則,但是摸索了幾天查了幾天的Google ,才知道還是要下載官方的自定義規則插件,然后用Java編寫自己的規則類,饒了一大圈很累。
我還下載了其他的一些SonarQube插件,通過查看代碼發現,基本都遵守并實現了官方的Plugin接口
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/70121.html
摘要:是一個用于代碼質量管理的開源平臺。支持,此處以為例。注意,此處必須保證該私鑰對應的公鑰即必須配置在上,否則會失敗配置完成后點擊。單元測試利用命令運行虛擬機進行單元測試,然后把輸出結果數據生成報告。 摘要: Jenkins Jenkins是一款開源的持續集成工具,它的特點:易于安裝、易于配置、可擴展(自己開發插件),并且它擁有數以百計的成熟插件,這種插件式的特點提供可做任何事情的可能。 ...
摘要:是一個用于代碼質量管理的開源平臺。支持,此處以為例。注意,此處必須保證該私鑰對應的公鑰即必須配置在上,否則會失敗配置完成后點擊。單元測試利用命令運行虛擬機進行單元測試,然后把輸出結果數據生成報告。 摘要: Jenkins Jenkins是一款開源的持續集成工具,它的特點:易于安裝、易于配置、可擴展(自己開發插件),并且它擁有數以百計的成熟插件,這種插件式的特點提供可做任何事情的可能。 ...
摘要:特點開源的代碼質量管控平臺,我們使用的即為。一個擴展插件,可以安裝在與等開發工具中中的使用安裝,搜索。連接的主要目的是同步分析規則質量規則與自定義設置。結果同步顯示同部分,此部分要求為。 介紹 ? 代碼質量管理的開源平臺,用于管理源代碼的質量 通過插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種編程語...
摘要:下面列出了個有助于你開發應用程序最好的工具。官方網站是一個集多功能于一身的故障排除工具。此輕便的工具有著驚人的分析能力。它提供了規則警報閾值排除和設置功能。官方網站以上就是每個程序員需要了解的個開發工具,希望對你有所幫助。 Java是計算機應用程序編程語言,被廣泛用于創建Web應用、服務器處理、用戶端的API開發乃至數據庫等多個領域。下面列出了8個有助于你開發Java應用程序最好的Ja...
閱讀 2376·2021-11-15 11:37
閱讀 2634·2021-09-23 11:21
閱讀 2962·2021-09-07 10:11
閱讀 3172·2019-08-30 15:53
閱讀 2831·2019-08-29 15:13
閱讀 1614·2019-08-26 13:57
閱讀 1108·2019-08-26 12:23
閱讀 2446·2019-08-26 11:51