@SuppressWarnings
Java で有効な警告名のリストは何ですか?
間で来るビット("")
の中で@SuppressWarnings("")
。
"ProhibitedExceptionDeclared"
Eclipseコレクションフレームワーク(org.eclipse.collections.impl.block.function.checked.ThrowingFunction
)内に表示されますが、以下にはリストされていません。
@SuppressWarnings
Java で有効な警告名のリストは何ですか?
間で来るビット("")
の中で@SuppressWarnings("")
。
"ProhibitedExceptionDeclared"
Eclipseコレクションフレームワーク(org.eclipse.collections.impl.block.function.checked.ThrowingFunction
)内に表示されますが、以下にはリストされていません。
回答:
IDEまたはコンパイラによって異なります。
- すべての警告を抑制する
- ボックス化 /ボックス化解除操作に関連する警告を抑制するボックス化
- キャスト操作に関連する警告を抑制するキャスト
- dep-annにより、非推奨のアノテーションに関連する警告を抑制
- 非推奨に関する警告を抑制する非推奨
- フォールスルーにより、switchステートメントに欠落しているブレークに関する警告を抑制
- 最後に、返されないfinallyブロックに関連する警告を抑制する
- 隠れ非表示変数という地元の人々に対する抑制警告に
- incomplete-switchは、switchステートメント(列挙型の場合)の欠落したエントリに関連する警告を抑制します
- NLS非NLS文字列リテラルに対する抑制の警告へ
- null分析に関連する警告を抑制するにはnull
- 推奨されないまたは禁止されている参照の使用に関連する警告を抑制する制限
- serialは、シリアライズ可能なクラスのserialVersionUIDフィールドがないことに関連する警告を抑制します
- スタティックアクセス間違った静的なアクセスに対する抑止警告へ
- 内部クラスからの最適化されていないアクセスに関連する警告を抑制する合成アクセス
- オフにすると、チェックされていない操作に関連する警告が抑制されます
- unqualified-field-accessは、フィールドアクセス非修飾に関する警告を抑制します
- 未使用のコードに関連する警告を抑制するには、unused
Indigoのリストの追加:
- javadoc警告に関連する警告を抑制するjavadoc
- rawtypesは、raw型の使用に関する警告を抑制します
- staticとして宣言できるメソッドに関連する警告を抑制するstatic-method
- superを呼び出さずにメソッドをオーバーライドすることに関する警告を抑制する
Junoのリストに追加:
- リソースタイプ閉鎖可能のリソースの使用に対する抑制の警告へ
- sync-overrideは、同期されたメソッドをオーバーライドするときに同期が欠落しているために警告を抑制します。
KeplerとLunaは、Juno(list)と同じトークンリストを使用します。
他は同様ですが異なります。
void foo( Object o ) { boolean b; if ( ( b = o == null ) ) o = new Object(); o.toString(); }
。一部の環境(例:NetBeans 7.3 w / Java 6 JDK [1.6.0_41])は、その時点でnullにできない場合でも"o possibly null"
、o.toString()
呼び出し時に生成されo
ます。
semicolon
ルナで動作していないようですか?:(誰かsemicolon
が本当に有効であるかどうかを誰かが確認できますか?
すべての値が許可されます(認識されない値は無視されます)。認識されるもののリストはコンパイラ固有です。
では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 識別子として使用されるアサートの発生
- ボクシング オートボクシング変換
- char配列が明示的に文字列に変換されずに文字列連結で使用される場合の charConcat
- conditionAssign 可能偶発ブール割り当て
- コンストラク ター名を持つコンストラクター名メソッド
- dep-annに @Deprecatedアノテーションがありません
- 非 推奨のコードまたは非推奨のコード外のメンバーの非推奨の使用法
- 推奨され ないアクセスルールに一致するタイプの推奨されない使用
- emptyBlock 文書化されていない空のブロック
- enumSwitch、不完全なスイッチ 不完全な列挙スイッチ
- フォールスルーの 可能性があるフォールスルーケース
- fieldHiding 別の変数を隠すフィールド
- 最終境界を持つfinalBound型パラメーター
- 最後に 最後にブロックが正常に完了しない
- 禁止さ れたアクセスルールに一致するタイプの禁止された使用
- 隠れ fieldHiding、localHiding、typeHidingとmaskedCatchBlockのためのマクロ
- indirectStatic 静的メンバーへの間接参照
- スーパーインターフェースとして使用されるintfAnnotationアノテーションタイプ
- intfNonInherited インターフェイスの非継承メソッドの互換性
- javadocが 無効なjavadoc
- localHiding 別の変数を隠すローカル変数
- maskedCatchBlocks 非表示のキャッチブロック
- nls 非nls文字列リテラル(タグの欠落// $ NON-NLS-)
- noEffectAssign 割り当て、効果なし
- nullの 潜在的な欠落または冗長nullチェック
- nullDereferenceに nullチェックがありません
- オーバーアン 不足の@Overrideアノテーション
- パラメータへのparamAssignの割り当て
- pkgDefaultMethod がpackage-defaultメソッドをオーバーライドしようとする
- (パラメーター化されたタイプの代わりに)rawタイプのraw使用法
- セミコロン 不要のセミコロンまたは空のステートメント
- シリアルが ないserialVersionUID
- specialParamHiding コンストラクターまたは別のフィールドを非表示にするセッターパラメーター
- indirectStaticおよびstaticReceiverの静的アクセスマクロ
- staticReceiver- 非静的レシーバーを使用して静的フィールドを取得するか、静的メソッドを呼び出す場合
- スーパー 呼び出しを行わずにメソッドをスーパーオーバーライドする
- 抑制 @SuppressWarningsを有効にします
- innerAccess 、synthetic- access、innerclassの合成アクセスを実行する場合
- タスク はソースコードのタスクタグのサポートを有効にします
- typeHiding 別の型を隠す型パラメーター
- 未 チェック未チェックタイプの操作
- invalidElse不要 なelse句
- unqualified-field-access、unqualifiedField unqualified reference to field
- unusedArgument、unusedImport、unusedLabel、unusedLocal、unusedPrivate、unusedThrownの未使用マクロ
- unusedArgument 未使用のメソッド引数
- unusedImport 未使用のインポート参照
- unusedLabel 未使用のラベル
- unusedLocal 未使用のローカル変数
- unusedPrivate 未使用のプライベートメンバー宣言
- unusedThrown 未使用の宣言されたスローされた例外
- uselessTypeCheck 不要なキャスト/インスタンスの操作
- varargsCast varargs引数には明示的なキャストが必要です
- warningToken @SuppressWarningsの 未処理の警告トークン
Sun JDK(1.6)には、サポートされている警告の短いリストがあります。
- deprecation 減価償却済みアイテムの使用を確認します。
- unchecked Java言語仕様で義務付けられているチェックされていない変換警告の詳細を提供します。
- シリアル化可能なクラスに欠落しているserialVersionUID定義について警告します。
- 最終的に正常に完了できない句について最終的に警告します。
- フォールスルーフォールスルーのケースがないかスイッチブロックを確認し、見つかった場合は警告メッセージを表示します。
- path 環境パス(クラスパスなど)に存在しないパスを確認します。
Macで利用可能な最新のjavac(1.6.0_13)では、次の警告がサポートされています
- すべて
- キャスト
- 非推奨
- divzero
- 空の
- 未チェック
- フォールスルー
- 道
- シリアル
- 最後に
- オーバーライド
私にとって新しいお気に入りは@SuppressWarnings("WeakerAccess")
IntelliJです。これにより、使用しているよりも弱いアクセス修飾子を使用する必要があると考えられたときに不満が出なくなります。テストをサポートするには、いくつかのメソッドへのパブリックアクセスが必要であり、@VisibleForTesting
アノテーションは警告を防止しません。
ETA:「匿名」が、@ MattCampbellにリンクされているページで、次の非常に役立つメモにコメントしました:
説明する目的でこのリストを使用する必要はありません。IntelliJは、必要に応じてこれらのSuppressWarningsを自動的に追加します。私が覚えている限り多くのリリースでこれを行うことができました。
警告が表示されている場所に移動し、Alt-Enterキーを押します(または、検査リストに表示されている場合はそれを選択します)。メニューが表示されたら、警告を表示してそれを修正するように提案します(たとえば、警告が「メソッドが静的である可能性がある場合、「静的にする」はIntellJが修正を提案するものです)を選択する代わりに、右矢印ボタンを使用してサブメニューにアクセスするだけで、「検査プロファイル設定の編集」などのオプションが表示されます。このリストの下部には、「クラスのすべての検査を抑制する」、「クラスの抑制」、「メソッドの抑制」、および「ステートメントの抑制」などのオプションがあります。あなたはおそらくこれらのうちのどれがリストの最後に現れるかを望みます。これらのいずれかを選択すると、コードに@SuppressWarnings注釈(または場合によってはコメント)が追加され、問題の警告が抑制されます。IntelliJは選択した警告に基づいて選択するため、どの注釈を追加するかを推測する必要はありません。
IntelliJで//noinspection
自動生成できることに気付きました
@SuppressWarninigs
ステートメントの前に計画がまだないことを確認してください//noinspection
を押して特定のものを自動生成し、右矢印キーを使用して[ ...の抑制 ]オプションを表示できるようになりましたIntelliJからの「スイッチのケースラベルが少なすぎます」という警告を抑制したかったのですが、IntelliJの@SuppressWarning
サポートの完全なリストは見つかりませんでしたが、//noinspection
私にとってはトリックでした。
//noinspection SwitchStatementWithTooFewBranches
switch
仕事の前にも私にとって。
そして、これははるかに完全なリストのようですが、他の場所では見つけられなかったAndroid-Studioに固有の警告がいくつか見つかりました(例:SynchronizeOnNonFinalField)
https://jazzy.id.au/2008/10/30/list_of_suppresswarnings_arguments.html
ああ、今、SOのガイドラインはSOの規制を妨害しています。一方では、リンクだけを提供するのではなく、リストをコピーすることになっています。しかし、その一方で、これは最大許容文字数を超えます。ですから、リンクが切れないことを望みます。
JSL 1.7
Oracleのドキュメントでは次のように述べています。
unchecked
:チェックされていない警告は、「チェックされていない」という文字列で識別されます。 deprecation
:次の場合を除いて、Javaコンパイラは、宣言にアノテーション@Deprecatedが付けられているタイプ、メソッド、フィールド、またはコンストラクターが使用される(つまり、名前でオーバーライド、呼び出される、または参照される)場合、非推奨警告を生成する必要があります。[...]注釈@SuppressWarnings( "deprecation");で警告を抑制するように注釈が付けられたエンティティ内で使用します。または次に、実装が独自のものを追加して文書化できることを説明します。
コンパイラベンダーは、この注釈タイプとともにサポートする警告名を文書化する必要があります。ベンダーは、同じ名前が複数のコンパイラで機能するように協力することをお勧めします。
unchecked
規格によって承認されている唯一のものであるというのは真実ではありません。あなたが引用されたものから非常に次のセクションでは、「利用は注釈と警告を抑制するために注釈されたエンティティ内にあるときに非推奨の警告が生成されないと言う@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