Checkstyleのカスタムルール作成と共有
導入しても反発が少なそうなCheckstyleのゆるいカスタムルールを考えてみた。
それとEclipseでのカスタムルール共有方法をメモ。
カスタムルール作成
雛形は既存(プラグイン付属?)の「Sun Checks (Eclipse)」のコピーを使用する(「Sun Checks」よりゆるいルールなのでこちらを選択)。
Javadoc Comments - Method Javadoc - allowUndeclaredRTE をチェック
「RuntimeExceptionのサブクラスに対する@throws節の記述を許可するかどうか」
これがデフォルトで許可されていない理由は何だろ?
Javadoc Comments - Package Html チェック外す
「各パッケージにpackage.htmlがあるかどうかチェック」
package-info.javaには5.0から対応みたい
Checkstyle自体は5.0出てるけどEclipseプラグインがまだ未対応だわ
http://stackoverflow.com/questions/173897/checkstyles-packagehtml-rule-ignores-package-info-java
Javadoc Comments - Style Javadoc - checkFirstSentence チェック外す
「最初の一文はピリオドで終わらなければならない」
説明文が必要ってことかな?日本語は丸で終わるので無効化
つかこれだとこう書かなきゃダメじゃん
/**hoge class. * @author souta-bot */
Size Violations - Maximum Line Length - max を80から100に
@seeとか書くと長くなるだろうから少し伸ばす
Size Violations - Maximum Parameters チェック外す
クラスにまとめるとかした方がいいんだろうけど、「ゆるく」だから外す
Whitespace - Empty For Iterator Pad チェック外す
「forループの初期化部分が空の場合、スペースありか無しか」
読みやすさどっちでもあんま変わらんでしょということで外す
Whitespace - Whitespace After - Type-cast チェック外す
個人的にキャストの後はスペース開けない派なので
Whitespace - Operator Wrap チェック外す
「一文が複数行に渡る場合の演算子の位置」
個人的には「次の行に続きますよ」と示すために行末派だけど行頭でもおk
Coding Problems - Avoid Inline Conditionals チェック外す
条件(3項)演算子許可
Coding Problems - Convariant Equals を追加
「共変なequalsをチェック」
Coding Problems - Default Comes Last を追加
「switch文でdefault節が最後に来るかチェック」
Coding Problems - Fall Through を追加
「switch文でのbreak忘れをチェック」
Coding Problems - Hidden Field - Parameter declaration チェック外す
コンストラクタ、セッター等の引数は同じ名前でええやんってことで
Coding Problems - Magic Number チェック外す
いちいち例外ルールを追加するのはめんどいので
Coding Problems - Modified Control Variable を追加
↓のようなのはwhileで
for (int i = 0; i < length; i++) { i++; }
Coding Problems - Parameter Assignment を追加
「引数への代入をチェック」
Coding Problems - String Literal Equality を追加
「str == "hoge"としている箇所をチェック」
Coding Problems - SuperClone を追加
「clone()でsuper.clone()を呼んでるかチェック」
Class Design - Design For Extension チェック外す
「継承可能なクラスの'privateでない'もしくは'staticでない'メソッドはabstractかfinalか空実装でなければならない」
ゆるくするために外す
Miscellaneous - Final Parameters チェック外す
いちいち引数全部にfinal付ける人いないよね
カスタムルールの共有
- 作成したカスタムルールをエクスポート(custom.checkstyle.xml)する
- custom.checkstyle.xmlをプロジェクトにインポートする
- プロジェクトのローカルルールにcustom.checkstyle.xmlを設定する
- プロジェクトのプロパティ - Checkstyle - Local Check Configurations - New
- Typeは「Project Relative Configuration」を選択
- Browseでインポートしたcustom.checkstyle.xmlを選択
- Nameを適当に入力してOK
- プロジェクトのプロパティ - Checkstyle - Main - Checkstyle active for this project をチェック
- 作成したローカルルールを選択してOK
テストケースをチェック対象から外す
- プロジェクトのプロパティ - Checkstyle - Use simple configuration チェック外す
- テストケースが含まれないようなファイルセットを追加
- Addボタンで新規ファイルセット編集画面へ
- Nameに「excludeTest」、Check Configurationに↑のローカルルールを選択
- Newボタンで新規パターン編集画面へ
- (testフォルダ以下を全てチェック対象から外す場合)パターンを「^test\.*」、Pattern includes filesのチェック外してOK
- 既存のallファイルセットのEnabledチェックを外して無効化