Sonar Java:检查测试类源代码的质量?

pan*_*n40 8 java unit-testing rules sonarqube

是否可以在Sonar中检查*Test.java源代码的质量,例如方法最大大小为100行?

问题是,Java Junit测试随着生产代码和复杂性而增长.

我们有超过1000行和2种方法的单元测试类.

我们想在Sonar中检查这些*Test.java类的一些规则.

Rom*_*las 5

从Sonar 3.1开始,它包含一个插件,该插件具有针对单元测试执行的特定PMD规则(为此创建了JIRA).你可以在里面看到它们Configuration > Quality Profiles > Coding Rules.

但是,您似乎希望对测试源代码运行完整分析,就像对生产源代码一样,并获得其他指标(例如,a % rules compliance和a % rules compliance for unit tests).我不认为Sonar本身提供这样的功能.您可以做的是运行2个声纳分析:

  1. 你的第一个分析是当前的分析;
  2. 第二个分析将把它视为src/test/java" 生产 "源代码.因此,第二次分析将为您提供代码的质量.对于此分析,您可以指定pom.xml将更改项目信息的特定Maven配置文件(或替代方案)(例如,它将指示这src/test/java是默认设置sourceDirectory).


小智 5

我还注意到 SonarQube 默认会忽略质量分析的测试资源。使用 schnatterers answer,我找到了一种简单的方法来创建一个单独的项目,该项目仅包含测试类作为 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>
Run Code Online (Sandbox Code Playgroud)

运行 Maven

mvn sonar:sonar -Panalyze-test-classes
Run Code Online (Sandbox Code Playgroud)

然后将激活此配置文件并在 SonarQube 中创建一个带有后缀 -tests 的附加项目,该项目仅包含测试类的分析。