10

ソナーで*Test.javaソースコードの品質をチェックインすることは可能ですか?たとえば、メソッドの最大サイズは100行ですか?

問題は、Java Junitテストが生産的なコードとともに成長していることであり、複雑さも増しています。

1000行以上と2つのメソッドを持つ単体テストクラスがあります。

これらの*Test.javaクラスのいくつかのルールをSonarにチェックインしたいと思います。

4

3 に答える 3

5

Sonar 3.1以降、単体テストに対して実行される特定のPMDルールを持つプラグインが含まれています(そのためにJIRAが作成されました)。あなたはそれらをで見ることができますConfiguration > Quality Profiles > Coding Rules

ただし、本番ソースコードで行うのと同じように、テストソースコードで完全な分析を実行し、追加のメトリック(たとえば、aおよびa )を取得したいようです。Sonarがそのような機能をネイティブに提供しているとは思いません。あなたができることは2ソナー分析を実行することです:% rules compliance% rules compliance for unit tests

  1. 最初の分析は現在のものです。
  2. 2番目の分析ではsrc/test/java、を「本番」のソースコードと見なします。したがって、この2番目の分析により、コードの品質がわかります。pom.xmlこの分析では、プロジェクト情報を変更する特定のMavenプロファイル(または代替)を指定できます(たとえば、それが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=srcsrc/test/java

テストコードに特定の品質ルールセットを使用する1つのアプローチは、2つの分析を実行することです。1つはメインコード用で、もう1つはテストコード用です。
これは次のように実現できます。

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を介した分析でも機能するはずです。

于 2015-02-17T16:23:13.787 に答える