单元测试- Sonar Java:检查质量的测试类源代码



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

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

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

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

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

自从Sonar 3.1以来,它包含了一个插件,该插件具有针对单元测试执行的特定PMD规则(为此创建了JIRA)。你可以在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)。

使用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已被弃用。

这也可以通过maven或jenkins进行分析。

相关内容

  • 没有找到相关文章

最新更新