VSCodeでのCheckstyleは、Checkstyle for Java で導入できる。
ここでは以下の手順で設定を行う。
- Checstyle for Javaのインストール
- google_checks.xmlのダウンロードとカスタマイズ
- workspace設定を行う
- 動作確認
Checstyle for Javaのインストール
拡張機能でCheckstyleで検索して見つかる Checkstyle for Javaをインストール。
google_checks.xmlのダウンロードとカスタマイズ
ベースとなる設定テンプレートしてgoogle_checks.xmlをダウンロードして、プロジェクトのフォルダ直下に保存。
コーディングルールの設定はプロジェクトごとに変わるという考えで、プロジェクト別に設定を持つという想定。
これは個人的な好みですが、google_checks.xmlから、設定を少しカスタマイズしました(インデントの幅など)
@@ -251,12 +251,12 @@
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
</module>
<module name="Indentation">
- <property name="basicOffset" value="2"/>
- <property name="braceAdjustment" value="2"/>
- <property name="caseIndent" value="2"/>
+ <property name="basicOffset" value="4"/>
+ <property name="braceAdjustment" value="0"/>
+ <property name="caseIndent" value="4"/>
<property name="throwsIndent" value="4"/>
<property name="lineWrappingIndentation" value="4"/>
- <property name="arrayInitIndent" value="2"/>
+ <property name="arrayInitIndent" value="4"/>
</module>
<module name="AbbreviationAsWordInName">
<property name="ignoreFinal" value="false"/>
workspace設定を行う
最後にCheckstyle for Javaがこの設定ファイルを使用するように設定します。
- checkstyleで検索して、Java > Checkstyle: Configurationに、先程プロジェクト直下に配置したgoogle_checks.xmlを指定。
- Java > Checkstyle: Versionを適当に最新10.3.1に。
Checkstyleバージョンは、メニューから View > Command Pallete… から、Checkstyle: Set the Checkstyle Versionから設定することもできます。
設定はワークスペースでの設定とします。このようにすることでプロジェクト単位での設定ということにできます。ユーザー単位の設定にするには設定タブでUserを選びます。
動作確認
このようにコーディングルールに沿ってない場合は警告がでます。
Checkstyleの警告は全部なくすべきですが、たまにどうしてもコードはそのまま維持したいときがあります。警告をそのまま残しておくと、「警告が残ってても仕方ない状態」になってしまい、必ずなくすべき警告と、ここでは警告があっても仕方ない警告の区別がつかず不健全になります。
なのでどうしても許容しなければならないときは、「ここは例外としてくれ」とCheckstyleに指定することで警告表示をなくすことができます。そうすると警告は常にゼロの状態を維持できるのでクリーンになります。
警告の例外は、どうしても仕方ないときだけに使ってください。なにも考えずに警告がでたら例外設定して消すわけではありません。
/**
* クラスJavaDocコメント.
*/
public class CheckStyleDemo {
/**
* メソッドJavadocコメント.
*/
public static void main(String[] args) {
var Aaa = 1; //CHECKSTYLE.SUPPRESS: LocalVariableNameCheck
//CHECKSTYLE.OFF: LocalVariableNameCheck
var Bbb = 2;
//CHECKSTYLE.ON: LocalVariableNameCheck
var c = Aaa + Bbb;
System.out.println(c);
}
}
Checkstyleの例外設定は、いろんな方法があるのですが、ここではコメントを使ったもので2種類紹介です。
//CHECKSTYLE.SUPPRESS: XXX
での設定は1行単位で設定し、XXXで指定した警告を除外しています。ここではLocalVariableNameCheckの警告です。警告名は、VSCodeでProblemsのパネルを見ればわかります。
//CHECKSTYLE.OFF
と//CHECKSTYLE.ON
は、開始と終了の範囲を指定して抑制しているものです。OFFしたままONで戻すのを忘れると、それ以降チェックされていないことになるので注意。
CHECKSTYLE.SUPPRESSといったコメント上のキーワードは、google_checks.xmlにあって自由に変更できます。ちょっと長すぎるのでもっと短い名前にしても良いと思います。