2009-03-06 17 views
10

コンパイル時に何千もの警告メッセージが表示されるJavaコードベースが残っています。私はこれらすべての警告のソースを実際に修正したいと思っていますが、残念ながら私の会社では現時点では選択肢ではありません(「収益を生み出す新製品を作る」などの担当者は、 。javadocのコンパイル中に警告(コードベース全体)を抑制するにはどうすればよいですか?

ここでは、私たちの継続的なビルドサーバーの出力で実際のエラーを見つけることが困難になったという事実がない限り、これらの警告をすべて表示しています。ビルドサーバはantコールを使用していますが、空想的なものはありませんが、今のところ、警告出力を防ぐためにこの呼び出しをどのように変更できるかについては何も見つけることができませんでした。

@SuppressWarningsアノテーションを追加してコードを実行すると、すべての警告ソースを通過して修正するのと同じくらい苦労するでしょう。

<javadoc suppressWarrnings="true" 

または類似した何かを、javadocのコンパイラ出力しないすべての警告メッセージを作るために:私は何ができるいくつかの方法がちょうどあった場合、それでは、私は本当に大好きですしています。このようなもの(グローバルなjavadocの警告を無効にする)は可能ですか?

答えて

5

antタスクとjavadocツールの両方で警告をグローバルに無効にする方法はありません。

考えられる回避策の1つは、javadocタスクを残りのビルドとは別のant呼び出しとして実行することです。 antに-logfile引き数を使用して、出力をコンソールではなくログファイルにリダイレクトすることができます。

6

-quietフラグを試してください。

+0

愚かな質問:このフラグを渡す方法を知っていますか?蟻? – machineghost

+0

は、私はこのようにそれを試してみてくださいadditionalparam – anon

+0

と思う: 私はそれが唯一の標準ドックレットをjavadocツールに適用されないよう-quietが動作しないだろうと思い – anon

1

マークの答えは私にはいいと思うし、おそらくクルーズコントロール連続ビルドシステムを使用していない人にはうってつけだろう。しかし、(私のように)そのシステムを使用している人にとっては、別の方法があることがわかりました。

クルーズコントロールは、いくつかのXSLTスタイルシートを使用してレポートを組み立てます。我々のケースでは、これらのスタイルシートはに住ん:

~/applications/cruisecontrol-bin-2.7.3/webapps/cruisecontrol/xsl 

が、私は、セットアップたちのインストールはしませんでしたので、それが標準パスかない場合、私は知りません。それにかかわらず、インストールで同等のディレクトリを見つけることができるはずです。そのディレクトリの中にはerrors.xslというファイルがあります。警告を取り除くには、そのファイルに2つの変更を加える必要があります。どちらにも既存のルールをコメントアウトする必要があります。

は交換してください:

<xsl:variable name="total.errorMessage.count" select="count($warn.messages) + count($error.messages)"/> 

で:

<!--  <xsl:variable name="total.errorMessage.count" select="count($warn.messages) + count($error.messages)"/>--> 
<xsl:variable name="total.errorMessage.count" select="count($error.messages)"/> 

これは、「エラーカウント」は、実際のエラーの数ではなく、エラー+警告の数も行います。その後

、交換してください:

<xsl:template match="message[@priority='warn']" mode="errors"> 
    <xsl:if test="not(starts-with(text(),'cvs update'))"> 
     <xsl:value-of select="text()"/><br class="none"/> 
    </xsl:if> 
</xsl:template> 

をして:

<!--<xsl:template match="message[@priority='warn']" mode="errors"> 
    <xsl:if test="not(starts-with(text(),'cvs update'))"> 
     <xsl:value-of select="text()"/><br class="none"/> 
    </xsl:if> 
</xsl:template>--> 

これは、実際の警告自体を非表示になります。あるいは、コメントアウトされたコードをいつでも削除することができますが、警告を元に戻したい場合に備えて、ファイルを最初にバックアップする必要があります。また、XSLTはXSLT以外のマークアップを無視するので、警告を使って他の操作を行うこともできます。たとえば、DIV内のすべての警告をラップし、CSS/Javascriptを使用して警告を「破棄」することができますそれらを完全に削除するのではなく、私は最終的に、このソリューションを自分自身を発見するために持っていたが

は、答えのすべてがここで私はすべての助けに感謝しますので、何が起こっていたかを理解する助けました。

0

私はちょうど私が私の前の回答で説明したもののわずかに良いバリアントがあった発見しました。 errors.xslを編集する代わりに、buildresults.xslを編集します。このファイルにはコメントが含まれています:あなたは(それが言及2行をコメントアウトし、それが言及1行のコメントを解除)そのコメントのアドバイスに従うなら

for traditional cc display of only compile errors and warnings 
comment out mode="errors" and uncomment mode="compile" and mode="javadoc" 

あなたはまったく同じ効果を得るが、コンパイルエラーに含まれています。

なぜ私の前のものの上に、この方法で悩みますか?まあ、私は(私は本当にこれをテストしたはずですが、私は怠け者です)私の以前の方法はコンパイルエラーを食べると思います。このメソッドはそれらを保持します。

8

のJava 8では、あなたはjavadocタスクにadditionalparam="-Xdoclint:none"を追加することができます。 (Source)

+0

私はこれを行うとまだ警告が表示されますが、私は(また)修正する時間がないという99の警告を見るよりも良い方法です。 –

1

は今日では、いくつかのjavadocの非標準オプションは、エラーおよび/または警告の過剰な数を避けることができます。 javadocのヘルプを確認してください(javadoc -Xを実行してください)。次の非標準のオプションが利用可能であるべきである。

-Xmaxerrs <number> 
-Xmaxwarns <number>    
-Xdoclint:(all|none|[-]<group>) 

-Xmaxerrs-Xmaxwarnsを印刷するエラーの最大数は -XdoclintはJavadocコメント内の問題の特定のチェックを有効または無効に印刷する警告の最大数を設定する設定します。例えば

、Javadocコメント内の問題のほとんどのために特定のチェックを無効になり-Xdoclint:noneを指定します。そして-Xmaxwarns 1は警告の数を1に制限します(私は-Xmaxwarns 0を試しましたが、すべての警告が表示されるので、0は無制限を意味します)

関連する問題