Javaの開発環境メモ
で開発環境を構築しているが、CheckStyleでアラートが大量に出ているので、その対応方法を調べて記載していく。
JenkinsをIEで表示して、ソースコードが表示されない問題はIEのため。
Chromeだと表示された。
1.CheckStyle
1-1.pomの設定
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.1</version>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>8.37</version>
</dependency>
</dependencies>
<configuration>
<configLocation>google_checks.xml</configLocation>
<failsOnError>true</failsOnError>
<failOnViolation>true</failOnViolation>
<violationSeverity>error</violationSeverity>
<consoleOutput>true</consoleOutput>
</configuration>
<executions>
<execution>
<id>checkstyle</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
1-2.設定ファイルのダウンロード
以下からダウンロードする?
pom.xmlファイルは以下のサイトを選考に設定した。
https://maven.apache.org/plugins/maven-checkstyle-plugin/examples/custom-checker-config.html
エラーになる場合は?
ルールのファイルとライブラリのバージョンに差があるのかもしれない。
2-1.インポート文が辞書式順序になっていません。
2-1-1.原因
自作のクラスのパッケージがorgよりもアルファベットの先頭にある場合(jpなど)に、警告になる。
1-2.Eclipseによる解決方法
- [ウィンドウ]-[設定]
- [Java]-[コード・スタイル]-[インポートの編成]
- 「新規」ボタンで自作のパッケージ(jp)を作成し、orgの上に移動する。
2.Package name 'パッケージ名' must match pattern '^[a-z]+(.[a-z][a-z0-9])$'.
原因 パッケージ名に「_」などの記号が含まれている。
2-1.CheckStyleによる解決方法
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
<message key="name.invalidPattern"
value="Package name ''{0}'' must match pattern ''{1}''."/>
</module>
上記のルールを警告ではなくINFOに変更する。
指定できるのは ignore, info, warning, error のいずれか。
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
<message key="name.invalidPattern"
value="Package name ''{0}'' must match pattern ''{1}''."/>
<property name="severity" value="info" />
</module>
参考URL
マルチモジュールでCheckStyleとかのルールを共有する
https://ssogabe.hatenadiary.org/entry/20091219/1261196056
2-2.static importでアスタリスク使用
原因
2-2-2.Eclipseによる解決方法
- [ウインドウ]-[設定]
- [Java]-[コード・スタイル]-[インポートの編成]
- 「*に必要な静的インポート数’の値を【999】に変更。
これでアスタリスクは無くなるが、static importと通常のimportの間に空行を入れる必要がある。
そのため、static importは無くして、テストコードは「 Assertions.assertThat(」という書き方にする。