2012-01-18 5 views
15

私は@SuppressWarnings注釈がパッケージに警告を表示できないのはなぜですか?

TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE 

ターゲットに適用されたjavadocからご覧ください。 PACKAGEにも適用されないのはなぜですか?

生の種類の警告が含まれているコードがいくつか生成されています。私はpackage-info.javaファイルを別の物理ディレクトリであるが、同じJavaパッケージに生成されたクラスのために追加して、Eclipse内で生成されたクラスから生成された警告を無視するようにしたいと考えています。

これはサポートされていないのはなぜですか?パッケージ全体で警告を抑制する別の方法はありますか?

+1

は[it](http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6299893)と同じ問題です –

+1

check [it](http://stackoverflow.com/questions/1127920/)どのように特定のディレクトリやファイルのような生成を防ぐためにJavaの警告を表示するか) –

+1

@faridmovsumov - 私はOracleの「バグ」と同じ問題を抱えています。自分のOracle IDを参照できるときに、そのバグレポートに2セントを追加する必要があります。 –

答えて

7

パッケージレベルでの警告を抑制することができない理由は、古いバグレポート(Status-Closed、Will Not Fix)への応答で説明されています。Allow SuppressWarnings to be specified at the package level

警告は、実際に生成されたコード の潜在的な問題を示しています。

現在のところ、SuppressWarningsには、字句的にネストされたコードにのみ影響する という望ましい特性があります。つまり、 は、あなたが読んでいるコード で警告が抑制されているかどうかをすぐに確認できます。

この提案は、ほとんどの場合回避できる という珍しい問題を解決するためにこのプロパティに違反します。

その応答にもいくつかの回避策があります。

  1. -source 1.4を使用してそれ自体によって生成されたコードをコンパイルし、5

  2. 要求suppresswarnings を使用するか、警告を引き起こすコードを生成しないかJavaCCのの更新バージョンを-target。

私は、独自のプロジェクトで生成されたコードを入れて、最初の提案を考えて、あなたのために働く必要があります。 2番目の提案は、バグレポートの問題に固有のように見えます。あなたがjavaccを使っているかどうかわかりません。

+0

これは、バグに対するコメントの数に基づいて、Oracleが認めるより一般的な問題です。 1.6または1.7の機能を使用する場合は、ターゲットバージョン1.5にコンパイルすることは回避策ではありません。残念ながら、コードを別のプロジェクトに抽出することは、この場合私にとって実行可能な解決策ではありません。 –

+0

これはうつ病です。特に、静的コード分析の増加と、スキャンの焦点を絞るためのSuppressWarningsの使用が挙げられます。リファクタリングコードを生成する政治的意志のない大規模なモノリシックプロジェクトでは、プロジェクトの移動やビルドでのコードの生成は、通常はオプションではありません。 –

1

良い質問です。これは将来的にOracleによって修正される予定です。

しかし、私はあなたに次のことをお勧めします。生成されたすべてのコードをプロジェクトに分割します。それは一般的な習慣です。次に、このプロジェクトを警告に辛抱するように設定します。たとえば、Eclipseでプロジェクトのプロパティ/ Javaコンパイラ/エラー/ワーキングを開き、「プロジェクト固有の設定を有効にする」を選択してすべての警告を無効にすることができます。

+0

この場合、生成されたコードを別のプロジェクトに抽出することは実行可能な解決策ではないと思います。しかし、提案をありがとう。 –

+0

「おそらくこれはOracleによって将来修正されるだろう」と私は大声で笑った。ありがとうございました。 – uckelman

関連する問題