是否可以在Sonar中檢查* Test.java源代碼的質量,例如方法最大大小100行?Sonar Java:檢查測試類源代碼的質量?
的問題是,在Java JUnit測試與生產代碼,也越來越複雜。
我們有超過1000行和2種方法的單元測試類。
我們希望在聲納檢查一些規則,這些* Test.java類。
是否可以在Sonar中檢查* Test.java源代碼的質量,例如方法最大大小100行?Sonar Java:檢查測試類源代碼的質量?
的問題是,在Java JUnit測試與生產代碼,也越來越複雜。
我們有超過1000行和2種方法的單元測試類。
我們希望在聲納檢查一些規則,這些* Test.java類。
由於聲納3.1,它包括具有要被針對單元測試(a JIRA was created for that)執行的特定規則PMD一個插件。你可以在Configuration > Quality Profiles > Coding Rules
看到他們。
然而,似乎要運行在測試源代碼的全面分析,就像你在生產源代碼做的,並得到其他指標(爲前。一個% rules compliance
,也是一個% rules compliance for unit tests
) 。我不認爲Sonar本身提供這種功能。你可以做的是運行2聲納分析:
src/test/java
爲「生產」的源代碼。因此,第二次分析會爲您提供代碼的質量。對於此分析,您可以指定將更改項目信息的特定Maven配置文件(或替代pom.xml
)(例如,它將指示src/test/java
是默認的sourceDirectory
)。隨着SonarQube 4.5.2(不知道他們什麼時候改變了行爲)在我看來,單元測試不再被排除在分析之外。當與sonar.sources=src
一起運行sonar-runner
聲納也會爲src/test/java
創建問題。
一種方法用於測試代碼具有某種特定品質的規則集將運行兩個分析:一個用於主代碼,另一個用於測試代碼。
sonar-project.properties:
sonar.projectName=testSonar
sonar.projectKey=testsonar
sonar.sources=src/main/java
sonar.projectVersion=1.0
sonar-runner
sonar-runner -Dsonar.projectKey=testsonar.test -Dsonar.sources=src/test/java -Dsonar.projectName="testSonar TEST"
不同質量
這可以如下來實現配置文件必須通過服務器進行更改(儀表板|項目配置|質量配置文件),因爲-Dsonar.profile
is deprecated。
這也應該通過maven或jenkins進行分析。
你如何在詹金斯工作跑的?你應該運行2個工作(一個用於主要分析,一個用於測試)? – GaspardP
我建議只使用一項工作進行兩次分析,因爲它更快,更容易維護。您可以添加另一個後期構建步驟(聲納或執行maven目標的shell)並按上述方式傳遞測試參數('-D') – schnatterer
我也注意到,SonarQube將默認忽略測試資源進行質量分析。使用schnatterers的答案,我發現了一種簡單的方法來創建一個單獨的項目,只包括測試類作爲SonarQube中的源代碼,因此觸發對它們的質量分析。在項目的POM我想分析我添加了一個輪廓,這相應地改變聲納性能:
<profiles>
<profile>
<id>analyze-test-classes</id>
<properties>
<sonar.sources>src/test/java</sonar.sources>
<sonar.tests></sonar.tests>
<sonar.projectName>${project.name}-tests</sonar.projectName>
<sonar.projectKey>${project.groupId}:${project.artifactId}-tests</sonar.projectKey>
</properties>
</profile>
</profiles>
運行Maven與
mvn sonar:sonar -Panalyze-test-classes
然後將激活此配置文件,並創建一個額外的項目SonarQube帶有後綴-tests,它只包含測試類的分析。
THX,這就是我所需要的,不是一個完整的分析,但一些規則:) – pan40
聲納> 3.4,您可以複製自己的規則和完善「PMD單元測試」插件 – pan40