创建Sonarqube项目
Sonarqube (nee Sonar)是炸彈。 不必每天檢查一次,但是如果您對質量很認真,則可以在Sprint計劃期間(如果不是每周一次)對其進行檢查。
在nemo.sonarqube.com上查看示例項目,例如OpenJPA ,以了解可用的信息。 您可能首先需要專注于特定組件,例如OpenJPA JDBC 。
作為開發人員,我對“問題”(主要是FindBugs和Squid)和“單元測試覆蓋率”最感興趣。 作為一名架構師,我最感興趣的是“包裝纏結指數”和“復雜性” –前者是對封裝和去耦進行適當衡量的方法,后者是對可維護性進行衡量的方法。
重要的是要用適量的鹽查看這些數字。 他們提供了寶貴的見解,但需要一些經驗才能充分利用它們。 這就是為什么要使這些信息遠離Bean計數器很重要,因為Bean計數器會設置不合理的標準,例如在所有單元測試中90%的代碼覆蓋率。 (如果您擁有豐富的異常處理能力,但沒有辦法模擬將引發這些異常的類,那么這將是不可能實現的。只有傻瓜才能用代碼健壯性換取更高的分數。)
安裝Sonarqube
安裝聲納法很簡單。 它與自己的webapp服務器和嵌入式數據庫捆綁在一起,因此您只需解壓縮并運行啟動腳本即可將其檢出。 生產系統應使用真實的數據庫。 支持多個數據庫。
檢查sonarqube網站以獲取詳細信息。
創建我們的項目
我承認–創建項目非常違反直覺。 簡而言之,一切都是通過將數據推送到服務器來處理的,而無需先在聲納服務器上創建任何東西。 (您仍然需要在sonarqube服務器上創建管理員用戶。)
實際上,這意味著我們添加了一個maven插件。 這是一個昂貴的插件,因此通常使用自定義配置文件,例如“聲納”(用于舊名稱)。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><profiles><profile><id>sonar</id><properties><sonar.language>java</sonar.language><sonar.host.url>http://chaos:9000</sonar.host.url><sonar.jdbc.url>jdbc:postgresql://chaos/sonar</sonar.jdbc.url><sonar.jdbc.username>sonar</sonar.jdbc.username><sonar.jdbc.password>sonar</sonar.jdbc.password></properties><build><plugins><plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.6.4.201312101107</version><executions><execution><id>default-prepare-agent</id><goals><goal>prepare-agent</goal></goals></execution><execution><id>default-prepare-agent-integration</id><goals><goal>prepare-agent-integration</goal></goals></execution><execution><id>default-report</id><goals><goal>report</goal></goals></execution><execution><id>default-report-integration</id><goals><goal>report-integration</goal></goals></execution><execution><id>default-check</id><goals><goal>check</goal></goals><configuration><rules><!-- implmentation is needed only for Maven 2 --><rule implementation="org.jacoco.maven.RuleConfiguration"><element>BUNDLE</element><limits><!-- implmentation is needed only for Maven 2 --><limit implementation="org.jacoco.report.check.Limit"><counter>COMPLEXITY</counter><value>COVEREDRATIO</value><minimum>0.60</minimum></limit></limits></rule></rules></configuration></execution></executions></plugin></plugins></build></profile></profiles> </project>更新我們的項目
聲納插件很昂貴,因此不應將其作為例行程序的一部分運行。 一種常見的做法是安排在CI服務器(Hudson,Continuum等)上進行每晚構建。開發人員可能還希望在處理問題積壓時執行計劃外構建–一種解決方案引入其他較低優先級的情況并不罕見。問題。
源代碼
使用此插件的示例項目位于https://github.com/beargiles/project-student [github]和http://beargiles.github.io/project-student/ [github頁面]。
這個項目說明需要對我們如何解釋結果有一定的認識。 我使用兩種常見的做法-拋出內部異常而不是返回空值,并使用自定義的'UnitTestException'測試失敗代碼,而不會在日志中堆滿無關的信息。 該代碼看起來與可疑代碼相同,因此已正確標記,但似乎沒有辦法消除魷魚警告。 (Findbugs有其自己的SuppressWarnings注釋。)
總體而言,這仍然是一個巨大的勝利。
(更新:可以通過sonarqube的“質量配置文件”選項卡控制魷魚警告。這可用于將嚴重性級別降低為“信息”,但由于這些有時是合法警告,因此我不愿直接禁用這些測試。為什么我強烈希望使用每個實例的FindBugs SuppressWarnings注釋而不是更改這些警告級別。)
翻譯自: https://www.javacodegeeks.com/2014/02/creating-sonarqube-projects.html
總結
以上是生活随笔為你收集整理的创建Sonarqube项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 合成和桥接方法
- 下一篇: 选择Vert.x的3个理由