2017-01-18 2 views
2

Checkstyleは、javadocコメントが添付されていないenum値について不平を言っています。しかし、少なくとも私の列挙型の多くでは、値そのものが自明であることが多いので、javadocを追加するだけで、不必要な混乱を招くことなく読みやすさが低下するようです。 JavadocVariableモジュールは私のチェックに追加された場合、enumの定数/値に欠けているjavadoc checkstyle警告を抑制する方法は?

/** 
* Example enum to illustrate the problem. Each value of this 
* enum represents a day of the week. 
*/ 
public enum DaysOfWeekClean { 

    SUNDAY, 
    MONDAY, 
    TUESDAY, 
    WEDNESDAY, 
    THURSDAY, 
    FRIDAY, 
    SATURDAY; 

} 
/** 
* Example enum to illustrate the problem. Each value of this 
* enum represents a day of the week, with comments added to each 
* distinct value to make the point. 
*/ 
public enum DaysOfWeekCluttered { 

    /** 
    * The day of the week named "Sunday". 
    */ 
    SUNDAY, 

    /** 
    * The day of the week named "Monday". 
    */ 
    MONDAY, 

    /** 
    * The day of the week named "Tuesday". 
    */ 
    TUESDAY, 

    /** 
    * The day of the week named "Wednesday". 
    */ 
    WEDNESDAY, 

    /** 
    * The day of the week named "Thursday". 
    */ 
    THURSDAY, 

    /** 
    * The day of the week named "Friday". 
    */ 
    FRIDAY, 

    /** 
    * The day of the week named "Saturday". 
    */ 
    SATURDAY; 

} 

最初の例(DaysOfWeekClean)を第二の例(DaysOfWeekDirty)が通過する一方、フラグが設定されます。次の例を考えます。

それは私に少しのジレンマを残します。私はcheckstyle通常のクラスメンバー/コメントされていない変数にフラグを立てるが、私の列挙定数を残しておきたい。 Checkstyleのドキュメント(とCheckstyleのソースコード自体)といくつかのStackOverflowの質問をかなり調べた後、私はこれを設定する方法を理解できないようです。

enum定数とクラスメンバー/変数の両方からjavadocが見つからない場合に警告することはできますが、どちらも無視することはできますが、他をチェックすることはできません。

:クラスのメンバまたは列挙型定数の両方が、何のJavadocを持っていない場合に警告し

  1. シンプル宣言:


    参考のために、ここでいくつかのCheckstyle私が試してみました構成、そしてその結果は

    <module name="JavadocVariable" /> 
    
  2. クラスメンバーまたはenum定数のいずれかにjavadocがない場合に警告する宣言:

    <module name="JavadocVariable"> 
        <property name="tokens" value="VARIABLE_DEF" /> 
    </module> 
    
  3. クラスメンバーまたは列挙定数のいずれかがないJavadocを有していない場合に警告に失敗

    宣言:

    <module name="JavadocVariable"> 
        <property name="tokens" value="ENUM_CONSTANT_DEF" /> 
    </module> 
    
+0

は//のCheckstyleで、http://stackoverflow.com/questions/4023185/how-to-disable-a-particular-checkstyle-rule-for-a-particular-line-of-codeを参照してください。特定のコードセクションに対してcheckstyle処理を簡単に無効にすることができます。 – RealHowTo

答えて

3

列挙値をスキップするために、あなたはCONFすることができますこのようなチェックigure:

<module name="JavadocVariable"> 
    <property name="tokens" value="VARIABLE_DEF"/> 
</module> 

2017年1月18日のようdocumentationmissing this informationであるが、これは修正される予定です。
私は、Eclipse-CS 6.14でこの動作をテストし、それはもうあなたのために動作しない場合、それはバグだろう。その後、OFFのコメント:

1

あなたはSuppressionCommentFilterのいずれかと、またはのCheckstyle 5.7から使用してのCheckstyle警告を抑制することができます@ SuppressWarnings注釈。

checkstyle.xml設定のいくつかの設定を行う必要があります。コメント

ことで

あなたcheckstyle.xmlにSuppressionCommentFilterを追加します。

<module name="SuppressionCommentFilter"/> 

そして、背中に&をオフのCheckstyleためにあなたのコードにコメントを追加します。あなたは注釈を好む場合は、SuppressWarningsFilterを使用することができます注釈

ことで

//CHECKSTYLE:OFF 
public enum DaysOfWeek { 
    //.. 
//CHECKSTYLE:ON 

。 SuppressWarningsHolderモジュールが必要であることに注意してください。 checkstyleのTreeWalkerにこれらのモジュールを両方追加します。xml:

<module name="TreeWalker"> 
    <!-- make @SuppressWarnings annotations available to Checkstyle, and filter warnings by annotation 
    --> 
    <module name="SuppressWarningsHolder" /> 
    <module name="SuppressWarningsFilter" /> 
</module> 

ここで除外する警告を列挙することができます。適切な警告コード& checkstyleを使用しないでください。

@SuppressWarnings("checkstyle:<appropriate warning here>") 
public enum DaysOfWeek { 
    //.. 

参考文献:

+0

非常にうまく構成された答えをありがとう!私は他のものが私が探していたものの多くであると思いますが、これはcheckstyle警告抑制の素晴らしい説明/文書です! – bertag

関連する問題