2016-09-15 134 views
1

CheckのCheckStyleドキュメントの参照JavadocMethodプロパティlogLoadErrorsがわかりません。そこCheckStyleの理解「JavadocMethod」のプロパティ「logLoadErrors」

我々は、このチェックは、彼らがRuntimeExceptionsているかどうかを確認するために@throwsタグに記載された例外クラスをロードする必要があるかもしれません

に語っています。クラスの読み込みに失敗すると、このプロパティはcheckstyleのエラー処理を制御できます。 falseに設定すると、クラスパス設定の問題が想定され、TreeWalkerはクラスの操作を完全に停止します。 true(デフォルト)に設定されている場合、checkstyleはjavadocのタイプミスまたはリファクタリングの問題を想定し、問題を通常のcheckstyleレポートに記録します(潜在的に設定エラーを隠す可能性があります)。次のように

さらにプロパティsuppressLoadErrorsが記載されている:logLoadErrorsがtrueに設定されている場合

、TreeWalkerの完全クラスを処理してのCheckstyle違反としてローディング例外を除いてすべての問題を表示します。このプロパティをtrueに設定すると、logLoadErrorsがtrueに設定されたときに生成された違反は、checkstyleレポートの違反として報告されなくなります。

私が最初に考えたのは@throwsタグに記載された例外クラスが見つからない場合は、標準設定にlogLoadErrors = true, suppressLoadErrors = falseのCheckstyleは、警告を与えることでした。

/** 
    * Returns if the first of two given numbers is smaller than the other one. 
    * @param a Description param a 
    * @param b Description param b 
    * @throws Exception bla 
    * @throws MyException foo 
    */ 
public boolean javadocMethod(int a, int b) throws Exception, MyException { 
    return a < b; 
} 

私はクラスMyExceptionが存在しないためのCheckstyleを実行する上で警告を受けるだろうと思った:私はこの例を試してみました。しかし、私は警告を受けていません。別の例がありますか?

答えて

0

これは非常に良い質問であり、Checkstyleツールのよりシャドウな領域の1つです。実際には、JavadocMethodCheckの親クラス、AbstractTypeAwareCheckのソースコードでは、それは言う:

のCheckstyleは認識してツールを入力していないと、このクラスから派生したすべてのチェックが潜在的に不安定です。

正しく設定されていれば、ロジックは正常に動作するはずですが、実行時の実際のクラスパス設定に依存するため、これは少し悲観的です。

Checkstyle code、あなたは(擬似コードにここでは単純化)このような作品について尋ねるオプションで

:だから

protected void logLoadErrorImpl(int lineNo, int columnNo, ...) { 
    if (!logLoadErrors) { 
     // throw an exception 
    } 
    if (!suppressLoadErrors) { 
     // report a Checkstyle violation 
    } 
} 

、Checkstyleはは(、あなたのケースでMyExceptionを)クラスをロードしようとするたび、このに失敗すると、これらのフラグを評価して何をすべきかを決定します。

クラスパス(これらの日は通常)を信頼する場合は、Javadocでエラーを強調表示するので、suppressLoadErrorsfalseに設定します。クラスパスを信頼しない場合は、suppressLoadErrorstrueに設定します。 logLoadErrorsをデフォルトのtrue以外に変更することは決してありません。これは、Checkstyleが他の意味のある処理を停止するためです。

私は throws句から、存在しない例外を削除する場合はあなたの例では、実際に私のために警告を生成します

:(またはだけで、多くの場合、コード品質ツールに送信されませんコンパイルされません

/** 
* Returns if the first of two given numbers is smaller than the other one. 
* @param a Description param a 
* @param b Description param b 
* @throws Exception bla 
* @throws MyException foo 
*/ 
public boolean javadocMethod(int a, int b) throws Exception { 
    return a < b; 
} 

コード以前のローカルバージョン)、これはあなたのIDEの特殊性であるかもしれません。

この回答はCheckstyle 7.1.1に基づいています。それはいくつかの光を出すことを願っています!

関連する問題