Ant/Checkstyle のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Ant/Checkstyle へ行く。
- 1 (2018-01-16 (火) 19:50:28)
- 2 (2018-01-18 (木) 18:31:49)
- 3 (2018-09-19 (水) 10:07:06)
- 4 (2018-10-30 (火) 16:40:13)
- title: AntでCheckstyleを実行する author: aterai pubdate: 2018-01-16T19:15:58+09:00 description: ソースコードを静的解析してコーディングルールの確認を行うCheckstyleをAntから実行するためのターゲットや、checks.xmlのサンプルなど。
概要
Ant
からCheckstyle
を実行してソースコードのコーディングルールをチェックします。
サンプルターゲット
build.xml
に記述するターゲットサンプル
<condition property="have.checkstyle">
<available file="${env.CHECKSTYLE_HOME}" />
</condition>
<target name="checkstyle" if="have.checkstyle">
<path id="checkstyle.classpath">
<fileset dir="${env.CHECKSTYLE_HOME}">
<include name="*-all.jar" />
</fileset>
</path>
<taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties"
classpathref="checkstyle.classpath" />
<mkdir dir="${build.reports}" />
<checkstyle config="${sca.dir}/checks.xml" failOnViolation="false">
<formatter type="plain" />
<formatter type="xml" toFile="${build.reports}/checkstyle-result.xml" />
<fileset dir="${src.dir}" excludes="**/module-info.java" includes="**/*.java" />
</checkstyle>
</target>
解説
- checkstyle - Browse /checkstyle at SourceForge.netからダウンロードした
checkstyle-x.x-all.jar
を環境変数%CHECKSTYLE_HOME%
を設定した場所にコピー - 上記のような
checkstyle
ターゲットをbuild.xml
に追加し、ant checkstyle
でcheckstyle-result.xml
を生成、jenkins
のCheckstyle
プラグインなどで読み込む - チェックするルールをカスタマイズする場合は、任意の
${sca.dir}
ディレクトリ以下にchecks.xml
を記述し、これをconfig
属性で参照する
メモ
module-info.java
8.4
ではJava 9
のmodule-info.java
に未対応なので、<exclude name="**/module-info.java" />
などで回避C:\temp\jst\all.xml:47: Unable to process files: [C:\...\src\java\module-info.java]
Unable to create Root Module
Checkstyle
のバージョン更新に伴うモジュールの廃止などの変更で、config
ファイル(上記の例では${user.dir}/checks.xml
)が不正になったときに発生する場合がある
8.2
remove FileContentsHolder module as FileContents object is available for filters on TreeWalker in TreeWalkerAudit Event . Author: Timur, Roman Ivanov #3573
<module name="FileContentsHolder" />
を削除する必要があるLeftCurlyCheck: clarify behavior of 'nlow' option after removal of 'maxLineLength'. Author: Roman Ivanov #3855
<property name="maxLineLength" value="100"/>
を削除する必要がある<module name="LeftCurly"> <property name="maxLineLength" value="100"/> </module>
8.1
Make SuppressionCommentFilter and SuppressWithNearbyCommentFilter children of TreeWalker. Author: Timur #4714
<module name="SuppressionCommentFilter" />
を<module name="TreeWalker">
の子要素になるよう移動削除する必要がある
エラー
AvoidEscapedUnicodeCharacters
Checksytle 8.7
で、c.getFontMetrics(c.getFont()).charWidth('あ');
のようなコードをチェックすると、error Unable to process files
とエラーになるwidth = c.getFontMetrics(c.getFont()).charWidth('\u3042');
にすれば問題ないが、AvoidEscapedUnicodeCharacters
と警告される
// @SuppressWarnings("AvoidEscapedUnicodeCharacters")
@Override protected synchronized void damage(Rectangle r) {
if (Objects.nonNull(r)) {
JTextComponent c = getComponent();
x = r.x;
y = r.y;
// width = c.getFontMetrics(c.getFont()).charWidth('w');
// width = c.getFontMetrics(c.getFont()).charWidth('\u3042');
// Checksytle 8.7: error Unable to process files...
width = c.getFontMetrics(c.getFont()).charWidth('あ');
height = r.height;
c.repaint();
}
}