web-dev-qa-db-ja.com

sonarqube +ロンボク=誤検知

import lombok.Data;

@Data
public class Filter {
    private Operator operator;
    private Object value;
    private String property;
    private PropertyType propertyType;
}

上記のコードの場合、未使用のプライベートフィールドに関する4つのsquid:S1068レポートがあります。 (ロンボクが生成したゲッターで使用されている場合でも)。 「lombok.Data」アノテーションのサポートに関連するいくつかの修正がプッシュされましたが、これらの迷惑な誤検知がまだあることがわかりました。

バージョン:SonarQube 6.4.0.25310
SonarJava 4.13.0.11627
Jenkins用のSonarQubeスキャナー(2.6.1)

20
okutane

このケースはSonarJavaによって完全に処理される必要があります。 Lombokアノテーションは、少なくともバージョン3.14以降に考慮されます( SONARJAVA-1642 )。取得している問題は、Javaプロジェクトの設定ミスによるものです。これを処理するためのカスタムルールを記述する必要はありません。これはアナライザーによってネイティブにサポートされています。

SonarJavaはバイトコードを読み取り、使用されている注釈を認識します。その結果、依存関係からバイトコードを提供しない場合、独自のコードからのバイトコードに加えて、アナライザーは不規則に動作します。

特に、プロパティsonar.Java.librariesは問題を解決するはずです。 SonarQube mavenまたはgradleスキャナーを使用する場合、このプロパティは通常自動的に設定されることに注意してください。

プロジェクトを正しく構成するには、ドキュメントをご覧ください。 https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode

次のプロパティをjenkins Sonar分析プロパティに追加しました。そして私のために働きます。

sonar.Java.libraries=/jenkins/jenkins-user-home/.m2/repository/org/projectlombok/lombok/1.16.20/lombok-1.16.20.jar

lombok v1.16.20は、私のプロジェクトのロンボックバージョンです。

7