特定のコードでソナーをオフにする


164

測定したくないコードの特定のブロックのソナー(www.sonarsource.org)測定をオフにすることは可能ですか?

例は、Findbugsが出力する「Preserve Stack Trace」警告です。サーバーを離れるとき、その例外がクライアントに知られていない場合は、クライアントがそのJARを持たないため、キャッチしたばかりの実際の例外は含めずに、メッセージをクライアントに返すだけで済みます。たとえば、例外が含まれていました)。

回答:


70

これはFAQです。//NOSONAR警告をトリガーする行に置くことができます。ただし、@ SuppressFBWarningsアノテーションを追加するというFindBugsメカニズムの使用を好みます。

@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
    value = "NAME_OF_THE_FINDBUGS_RULE_TO_IGNORE",
    justification = "Why you choose to ignore it")

2
同意した。ただし、Sonarが正しく解釈し@SuppressFBWarningsjava.lang.SuppressWarningsとの衝突を回避するために追加)、無視するかどうかはわかりません。
MarcelStör2013

私の知る限り、SonarはFindBugsを使用しています。したがって、FindBugsがこれらの注釈を処理する場合、Sonarを介してFindBugsを実行するときにそれらが機能しない理由はわかりません。とにかくテストするのは難しいことではありません。
JBニゼット2013

4
FAQリンクは古くなっています。こちらが新しいFAQです
Wiredniko

11
SonarQube FAQへの他のリンクを提供していただけませんか?FAQの代わりにログインフォームが表示される
Win4ster

233

SuppressWarningsでクラスまたはメソッドに注釈を付けることができます

@java.lang.SuppressWarnings("squid:S00112")

この場合のsquid:S00112はソナー問題IDです。このIDは、Sonar UIで確認できます。問題のドリルダウンに移動します。警告を抑制したい問題を見つけます。コードの赤い問題ボックスには、特定の問題の定義を含むルールリンクがあります。それをクリックすると、ページの上部にIDが表示されます。


8
これは特定のFindBugsルールIDでも機能することを確認できます@SuppressWarnings("findbugs:UI_INHERITANCE_UNSAFE_GETRESOURCE")
bcody

19
問題は、Eclipseが警告を表示することUnsupported @SuppressWarnings("squid:S00112")です。これを無視するようにEclipseを構成できますが、その場合、inなどのタイプミス@SuppressWarnings("uncheckedd")は検出されません。
Ortomala Lokni 2017年

1
@SuppressWarningsおよびSonarのドキュメントについては、docs.codescan.io / hc / en-us / articles /…を参照してください。
リッチドハティ

89

を使用して特定の警告を抑制することをお勧めします@SuppressWarnings("squid:S2078")

複数の警告を抑制するには、次のようにします @SuppressWarnings({"squid:S2078", "squid:S2076"})

//NOSONAR特定の行のすべてのエラーを無視するようにSonarQubeに指示するコメントもあります。

最後に、ユーザーインターフェイスの適切な権限がある場合は、インターフェイスから直接フラグを誤検知として発行できます。

特定の警告を抑制することをお勧めするのは、特定の問題を使用する代わりにブロックし//NOSONAR、Sonarの問題が誤ってコードに忍び込むリスクを回避することをお勧めするためです。

これについて詳しくは、FAQをご覧ください。

注:GáborBakosは、現在404になっている古いFAQを指しています。これは私にとって最初のgoogleの結果なので、同じ質問を持つ可能性のある他の人を助けたい

編集:2016年6月30日SonarQubeはSonarLintと呼ばれるようになりました

あなたがイカの数を見つける方法を不思議に思っている場合には。ソナーメッセージ(例Remove this method to simply inherit it.)をクリックするだけで、ソナーの問題が展開します。

左下にイカの番号が表示されます(例:squid:S1185保守性>理解可能性)

だからあなたはそれを抑制することができます @SuppressWarnings("squid:S1185")


2
複数のソナーキューブの警告を無視するヒントをありがとう
AlexWien

1
インターフェース上でそれを誤検知としてマークすることに関するもう1つの問題は、何らかの理由でプロジェクトが削除されて再度追加された場合、設定したすべてのフラグが失われることです。
annedroiid

@annedroiid-pom.xmlファイルで同じことができる場合、何か方法はありますか?Iここにき昇給の質問:stackoverflow.com/questions/57789832/...
Pra_A

8

// NOSONARを使用すると、コードでサポートできない場合に警告が表示される行を使用できます。できます!


4

私はソナー5.6でイカ番号を見つけることができません、この注釈も機能します:

@SuppressWarnings({"pmd:AvoidCatchingGenericException", "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck"})

1
squidソナーソースのJavaデータベース(SonarAnalyzer Java)用です。pmdそしてcheckstyle他のルールリポジトリです。
ダニエルC.ソブラル2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.