PMDのJavaルールについてまとめます。バージョン6.35.0時のルールとなっています。
非推奨となっているルールには「△」を先頭に付与しています。
バージョン6.35.0から6.47.0までのルールの差分については別の記事でまとめています。 olafnosuke.hatenablog.com
Documentationカテゴリには、コードドキュメントに関連するルールを含んでいる。
CommentContent
コメント内に他人が見て気分が悪くなる言葉を書かない。
// NG // OMG, this is horrible, Bob is an idiot !!!
プロパティ
名前 | デフォルト値 | 説明 | 複数指定 |
---|---|---|---|
caseSensitive | false | 大文字と小文字を区別するかどうか | - |
disallowedTerms | idiot| jerk | コメントで禁止する語句 | 「|」区切りで指定 |
ルール設定例
<!-- プロパティ設定なし --> <rule ref="category/java/documentation.xml/CommentContent" /> <!-- プロパティ設定あり --> <rule ref="category/java/documentation.xml/CommentContent"> <properties> <property name="caseSensitive" value="false" /> <property name="disallowedTerms" value="idiot|jerk" /> </properties> </rule>
CommentRequired
Javadocコメントの記述を必須にする。
デフォルトでは以下のコメントが必須
・クラス、フィールド
・public/protectedのメソッド、コンストラクタ
・enum
プロパティ
Required
、Ignored
、Unwanted
のどれかを指定する
・Required:必要
・Ignored:無視(チェック対象外)
・Unwanted:不要
名前 | デフォルト値 | 説明 | 複数指定 |
---|---|---|---|
methodWithOverrideCommentRequirement | Ignored | @Override メソッドに関するコメントの必要性 | - |
accessorCommentRequirement | Ignored | ゲッターとセッターに関するコメントの必要性 | - |
classCommentRequirement | Required | クラスのコメントの必要性 | - |
fieldCommentRequirement | Required | フィールドのコメントの必要性 | - |
publicMethodCommentRequirement | Required | パブリックメソッドとコンストラクタのコメントの必要性 | - |
protectedMethodCommentRequirement | Required | プロテクトメソッドとコンストラクタのコメントの必要性 | - |
enumCommentRequirement | Required | enumのコメントの必要性 | - |
serialVersionUIDCommentRequired | Ignored | serialVersionUIDのコメントの必要性 | - |
serialPersistentFieldsCommentRequired | Ignored | serialPersistentFieldsのコメントの必要性 | - |
ルール設定例
<!-- プロパティ設定なし --> <rule ref="category/java/documentation.xml/CommentRequired" /> <!-- プロパティ設定あり --> <rule ref="category/java/documentation.xml/CommentRequired"> <properties> <property name="methodWithOverrideCommentRequirement" value="Ignored" /> <property name="accessorCommentRequirement" value="Ignored" /> <property name="classCommentRequirement" value="Required" /> <property name="fieldCommentRequirement" value="Required" /> <property name="publicMethodCommentRequirement" value="Required" /> <property name="protectedMethodCommentRequirement" value="Required" /> <property name="enumCommentRequirement" value="Required" /> <property name="serialVersionUIDCommentRequired" value="Ignored" /> <property name="serialPersistentFieldsCommentRequired" value="Ignored" /> </properties> </rule>
CommentSize
コメントが制限値よりも長くないかをチェックする。 デフォルトでは、1行80文字以内で6行以内。
// NG 行数が多すぎる 6行以内にするべき /** * * too many lines! * * * * * * * * * * * * */ public void foo() { }
プロパティ
名前 | デフォルト値 | 説明 | 複数指定 |
---|---|---|---|
maxLines | 6 | 最大行数 | - |
maxLineLength | 80 | 最大ライン長 | - |
ルール設定例
<!-- プロパティ設定なし --> <rule ref="category/java/documentation.xml/CommentSize" /> <!-- プロパティ設定あり --> <rule ref="category/java/documentation.xml/CommentSize"> <properties> <property name="maxLines" value="6" /> <property name="maxLineLength" value="80" /> </properties> </rule>
UncommentedEmptyConstructor
処理が空でコメントも記述されていないコンストラクタが存在するかどうか。
// NG public class Sample { public Sample () { } } // OK public class Sample { public Sample () { // コメント } }
プロパティ
名前 | デフォルト値 | 説明 | 複数指定 |
---|---|---|---|
ignoreExplicitConstructorInvocation | false | コンストラクターが空かどうかを判断するときに明示的なコンストラクターの呼び出しを無視するかどうか | - |
ルール設定例
<!-- プロパティ設定なし --> <rule ref="category/java/documentation.xml/UncommentedEmptyConstructor" /> <!-- プロパティ設定あり --> <rule ref="category/java/documentation.xml/UncommentedEmptyConstructor"> <properties> <property name="ignoreExplicitConstructorInvocation" value="false" /> </properties> </rule>
UncommentedEmptyMethodBody
処理が空でコメントも記述されていないメソッドが存在するかどうか。
// NG public class Sample { public void doSomething () { } } // OK public class Sample { public void doSomething () { // コメント } }
ルール設定例
<rule ref="category/java/documentation.xml/UncommentedEmptyMethodBody" />
他のカテゴリのルールもまとめています。
Best Practiceカテゴリのまとめはこちら: olafnosuke.hatenablog.com
Code Styleカテゴリのまとめはこちら: olafnosuke.hatenablog.com
Designカテゴリのまとめはこちら: olafnosuke.hatenablog.com
Error Proneカテゴリのまとめはこちら: olafnosuke.hatenablog.com
Multithreadingカテゴリのまとめはこちら: olafnosuke.hatenablog.com
Performanceカテゴリのまとめはこちら: olafnosuke.hatenablog.com
Securityカテゴリのまとめはこちら: olafnosuke.hatenablog.com