2013-01-17 65 views
6

是否可以在Sonar中檢查* Test.java源代碼的質量,例如方法最大大小100行?Sonar Java:檢查測試類源代碼的質量?

的問題是,在Java JUnit測試與生產代碼,也越來越複雜。

我們有超過1000行和2種方法的單元測試類。

我們希望在聲納檢查一些規則,這些* Test.java類。

回答

4

由於聲納3.1,它包括具有要被針對單元測試(a JIRA was created for that)執行的特定規則PMD一個插件。你可以在Configuration > Quality Profiles > Coding Rules看到他們。

然而,似乎要運行在測試源代碼的全面分析,就像你在生產源代碼做的,並得到其他指標(爲前。一個% rules compliance,也是一個% rules compliance for unit tests) 。我不認爲Sonar本身提供這種功能。你可以做的是運行2聲納分析:

  1. 你的第一個分析是目前的分析;
  2. 第二分析將考慮src/test/java爲「生產」的源代碼。因此,第二次分析會爲您提供代碼的質量。對於此分析,您可以指定將更改項目信息的特定Maven配置文件(或替代pom.xml)(例如,它將指示src/test/java是默認的sourceDirectory)。
+0

THX,這就是我所需要的,不是一個完整的分析,但一些規則:) – pan40

+0

聲納> 3.4,您可以複製自己的規則和完善「PMD單元測試」插件 – pan40

0

隨着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.profileis deprecated

這也應該通過maven或jenkins進行分析。

+0

你如何在詹金斯工作跑的?你應該運行2個工作(一個用於主要分析,一個用於測試)? – GaspardP

+0

我建議只使用一項工作進行兩次分析,因爲它更快,更容易維護。您可以添加另一個後期構建步驟(聲納或執行maven目標的shell)並按上述方式傳遞測試參數('-D') – schnatterer

1

我也注意到,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,它只包含測試類的分析。