10

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

问题是,Java Junit 测试随着生产代码的增加而增加,复杂性也随之增加。

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

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

4

3 回答 3

5

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

但是,您似乎希望像对生产源代码一样对测试源代码进行全面分析,并获得额外的指标(例如 a和 a )。我不认为 Sonar 本身就提供了这样的功能。您可以做的是运行 2 Sonar 分析:% rules compliance% rules compliance for unit tests

  1. 您的第一个分析是当前分析;
  2. 第二个分析将考虑src/test/java作为“生产”源代码。因此,第二次分析将为您提供代码的质量。对于此分析,您可以指定将更改项目信息的特定 Maven 配置文件(或替代配置文件pom.xml)(例如,它将指示这src/test/java是默认配置文件sourceDirectory)。
于 2013-01-17T10:30:38.420 回答
5

我还注意到 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 的附加项目,该项目仅包含对测试类的分析。

于 2015-12-10T22:11:30.740 回答
0

使用 SonarQube 4.5.2(不知道他们何时改变了行为)在我看来,单元测试不再被排除在分析之外。sonar-runner使用sonar.sources=src声纳运行时也会为src/test/java.

对测试代码使用特定质量规则集的一种方法是运行两种分析:一种用于主代码,另一种用于测试代码。
这可以实现如下:

声纳-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 已弃用

这也应该适用于通过 maven 或 jenkins 进行的分析。

于 2015-02-17T16:23:13.787 回答