質問

Javaでの有効な @SuppressWarnings 警告名のリストは何ですか?

@SuppressWarnings("")("")の間にあるビット。

役に立ちましたか?

解決

IDEまたはコンパイラによって異なります。

Eclipse Galileoのリストは次のとおりです。

  
      
  • all すべての警告を抑制する
  •   
  • ボクシング:ボクシング/ボックス解除操作に関する警告を抑制します
  •   
  • キャスト:キャスト操作に関する警告を抑制します
  •   
  • dep-ann :非推奨の注釈に関連する警告を抑制します
  •   
  • 非推奨:非推奨に関連する警告を抑制します
  •   
  • フォールスルー:スイッチのブレークの欠落に関する警告を抑制します   文
  •   
  • finally を使用して、最終的にブロックされないブロックに関する警告を抑制します。   戻る
  •   
  • 非表示:変数を非表示にするローカル人に対する警告を抑制します
  •   
  • incomplete-switch :エントリの欠落に関連する警告を抑制します   switchステートメント(enum case)で
  •   
  • nls は、非nls文字列リテラルに関連する警告を抑制します
  •   
  • null は、null分析に関連する警告を抑制します
  •   
  • 制限:推奨されないまたは   禁止されている参照
  •   
  • serial 。serialVersionUIDの欠落に関する警告を抑制します   シリアライズ可能なクラスのフィールド
  •   
  • static-access :誤った静的に関する警告を抑制します   アクセス
  •   
  • 合成アクセス:最適化されていないものに関連する警告を抑制します   内部クラスからのアクセス
  •   
  • 未チェック:未チェックの操作に関する警告を抑制します
  •   
  • unqualified-field-access :フィールドに関連する警告を抑制します   資格のないアクセス
  •   
  • 未使用:未使用コードに関連する警告を抑制します
  •   

リスト Indigoの追加:

  
      
  • javadoc :javadocの警告に関連する警告を抑制します
  •   
  • rawtypes :生のタイプの使用に関する警告を抑制します
  •   
  • static-method :静的として宣言できるメソッドに関連する警告を抑制します
  •   
  • super は、スーパー呼び出しなしでメソッドをオーバーライドすることに関する警告を抑制します
  •   

Junoのリストの追加:

  
      
  • resource :タイプがCloseableのリソースの使用に関する警告を抑制する
  •   
  • sync-override :同期メソッドをオーバーライドするときに同期が欠落しているために警告が表示されないようにする
  •   

KeplerとLunaはJunoと同じトークンリストを使用します(リスト)。

その他も同様ですが、異なります。

他のヒント

すべての値が許可されます(認識されない値は無視されます)。認識されるもののリストはコンパイラ固有です。

Javaチュートリアル unchecked および deprecation は、Java言語仕様で必要な2つの警告としてリストされているため、すべてのコンパイラで有効です:

  

すべてのコンパイラ警告はカテゴリに属します。 Java言語仕様には、非推奨と未チェックの2つのカテゴリがリストされています。

Java言語仕様内の特定のセクションは、バージョン間で一貫していません。 Java SE 8仕様では、 unchecked および deprecation は、セクション 9.6.4.5でコンパイラ警告としてリストされています。それぞれ@SuppressWarnings および 9.6.4.6 @Deprecated

Sunのコンパイラの場合、 javac -X を実行すると、そのバージョンで認識されるすべての値のリストが表示されます。 1.5.0_17の場合、リストは次のように表示されます。

  • すべて
  • 非推奨
  • 未チェック
  • フォールスルー
  • パス
  • シリアル
  • 最終的に

リストはコンパイラ固有です。ただし、 Eclipse

  
      
  • allDeprecation 非推奨コード内であっても非推奨
  •   
  • allJavadoc 無効または欠落しているjavadoc
  •   
  • assertIdentifier 識別子として使用されるアサートの発生
  •   
  • ボクシングオートボクシングコンバージョン
  •   
  • charConcat 文字配列を明示的に文字列に変換せずに文字列連結で使用する場合
  •   
  • conditionAssign 偶発的なブール割り当ての可能性
  •   
  • constructorName メソッド   コンストラクター名
  •   
  • dep-ann に@Deprecatedがありません   注釈
  •   
  • 非推奨非推奨コードまたは非推奨コード外のメンバーの使用
  •   
  • 非推奨非推奨のアクセスルールに一致するタイプの使用
  •   
  • emptyBlock 文書化されていない空のブロック
  •   
  • enumSwitch incomplete-switch 不完全な列挙型スイッチ
  •   
  • フォールスルー考えられるフォールスルーケース
  •   
  • fieldHiding 別の変数を非表示にするフィールド
  •   
  • finalBound 型パラメーターと最終境界
  •   
  • 最終的に最終的に正常に完了しないブロック
  •   
  • 禁止禁止アクセスルールに一致するタイプの使用
  •   fieldliiding、localHiding、typeHiding、maskedCatchBlockの
  • 非表示マクロ
  •   
  • indirectStatic 静的メンバーへの間接参照
  •   
  • intfAnnotation スーパーインターフェースとして使用される注釈タイプ
  •   
  • intfNonInherited インターフェースの非継承メソッドの互換性
  •   
  • javadoc 無効なjavadoc
  •   
  • localHiding 別の変数を隠すローカル変数
  •   
  • maskedCatchBlocks 隠されたcatchブロック
  •   
  • nls 非nls文字列リテラル(タグ// $ NON-NLS-の欠落)
  •   
  • noEffectAssign 効果のない割り当て
  •   
  • null 潜在的な欠落または冗長なnullチェック
  •   
  • nullDereference nullチェックがありません
  •   
  • over @Overrideアノテーションがありません
  •   
  • paramAssign パラメータへの割り当て
  •   
  • pkgDefaultMethod package-defaultメソッドのオーバーライドを試みます
  •   
  • raw 使用タイプa(パラメータ化されたタイプではなく)rawタイプ
  •   
  • セミコロン不要なセミコロンまたは空のステートメント
  •   
  • serial serialVersionUIDがありません
  •   
  • specialParamHiding 別のフィールドを非表示にするコンストラクターまたはセッターパラメーター
  •   
  • static-access indirectStaticおよびstaticReceiverのマクロ
  •   
  • staticReceiver 静的フィールドの取得または静的メソッドの呼び出しに非静的レシーバーが使用される場合
  •   
  • super スーパー呼び出しを行わずにメソッドをオーバーライドする
  •   
  • 抑制 @SuppressWarningsを有効にする
  •   
  • syntheticAccess、synthetic-access インナークラスの合成アクセスを実行する場合
  •   
  • タスクソースコードでタスクタグのサポートを有効にします
  •   
  • typeHiding 別の型を非表示にする型パラメーター
  •   
  • チェックなしチェックなしのタイプ操作
  •   
  • 不要

新しいお気に入りはIntelliJの @SuppressWarnings(" WeakerAccess")です。これにより、使用するアクセス修飾子よりも弱いアクセス修飾子が必要だと判断されたときに文句を言わなくなります。テストをサポートするためにいくつかのメソッドへのパブリックアクセスが必要であり、 @VisibleForTesting アノテーションは警告を妨げません。

ETA: "匿名" @MattCampbellがリンクされているページで、次の信じられないほど便利なメモをコメントしました。

  

このリストをあなたが目的に使用する必要はないはずです   説明する。 IntelliJはこれらのSuppressWarningsを追加します   あなたがそれを頼むと自動的に。これを行うことができました   覚えている限り多くのリリースがあります。

     

警告がある場所に移動し、Alt-Enterを入力します   (または、そこに表示されている場合は、[検査]リストで選択します)。   メニューが表示されたら、警告を表示し、修正するように提案します   (たとえば、警告が「メソッドは静的である可能性がある」の場合、「静的にする」   IntellJが修正するという申し出です)、「Enter」を選択する代わりに、   右矢印ボタンを使用してサブメニューにアクセスします。   「検査プロファイル設定の編集」などのオプションなどなど。で   このリストの下部には、"のすべての検査を抑制する   クラス"、"クラスの抑制"、"メソッドの抑制"   "ステートメントの非表示"。あなたはおそらくこれらのうちのどれかが欲しい   リストの最後に表示されます。これらのいずれかを選択すると、   コードへの@SuppressWarningsアノテーション(または場合によってはコメント)   問題の警告を抑制します。あなたが推測する必要はありません   IntelliJは警告に基づいて選択するため、追加する注釈   選択しました。

これははるかに完全なリストのようです。Android-Studioに固有の警告を見つけたので、他では見つけることができませんでした(例:SynchronizeOnNonFinalField)

https://jazzy.id.au/2008/10/30/ list_of_suppresswarnings_arguments.html

今、SOのガイドラインはSOの制限と矛盾しています。 一方では、リンクのみを提供するのではなく、リストをコピーすることになっています。 しかし、一方で、これは文字の最大許容数を超えます。それでは、リンクが壊れないことを願っています。

JSL 1.7

Oracleのドキュメントの言及:

  • unchecked :未確認の警告は、文字列" unchecked"で識別されます。
  • deprecation :@Deprecatedアノテーションが宣言に付けられている型、メソッド、フィールド、またはコンストラクターが使用される(つまり、オーバーライド、起動、または参照される)場合、Javaコンパイラーは非推奨警告を生成する必要があります名前...)、ただし次の場合を除きます:[...]アノテーション@SuppressWarnings(" deprecation");または

次に、実装が独自に追加および文書化できることを説明します:

  

コンパイラベンダーは、サポートする警告名をこの注釈タイプと併せて文書化する必要があります。ベンダーは、複数のコンパイラで同じ名前が機能するように協力することをお勧めします。

IntelliJ抑制パラメーターのマスターリストがあることを追加します: https:// gist.github.com/vegaasen/157fbc6dce8545b7f12c

かなり包括的に見えます。部分的:

Warning Description - Warning Name

"Magic character" MagicCharacter 
"Magic number" MagicNumber 
'Comparator.compare()' method does not use parameter ComparatorMethodParameterNotUsed 
'Connection.prepare*()' call with non-constant string JDBCPrepareStatementWithNonConstantString 
'Iterator.hasNext()' which calls 'next()' IteratorHasNextCallsIteratorNext 
'Iterator.next()' which can't throw 'NoSuchElementException' IteratorNextCanNotThrowNoSuchElementException 
'Statement.execute()' call with non-constant string JDBCExecuteWithNonConstantString 
'String.equals("")' StringEqualsEmptyString 
'StringBuffer' may be 'StringBuilder' (JDK 5.0 only) StringBufferMayBeStringBuilder 
'StringBuffer.toString()' in concatenation StringBufferToStringInConcatenation 
'assert' statement AssertStatement 
'assertEquals()' between objects of inconvertible types AssertEqualsBetweenInconvertibleTypes 
'await()' not in loop AwaitNotInLoop 
'await()' without corresponding 'signal()' AwaitWithoutCorrespondingSignal 
'break' statement BreakStatement 
'break' statement with label BreakStatementWithLabel 
'catch' generic class CatchGenericClass 
'clone()' does not call 'super.clone()' CloneDoesntCallSuperClone

// noinspection IntelliJ

で自動生成できることに気付きました
  • ステートメントの前に計画 @SuppressWarninigs がまだないことを確認してください
  • 警告が選択されているときに Alt + Enter を押してから右矢印キー<を使用すると、特定の // noinspection を自動生成できます]で[ ...の抑制]オプションを表示します

「スイッチのケースラベルが少なすぎます」を抑制したい場合、ここで終了しました。 IntelliJからの警告。 IntelliJの @SuppressWarning サポートの完全なリストは見つかりませんでしたが、 // noinspection が私のためにトリックをしてくれました。

SonarLintを使用している場合、 メソッドの上で試すか、イカ文字列全体をクラス化してください:     @SuppressWarnings(&quot; squid:S1172&quot;)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top