以下の内容はhttps://end0tknr.hateblo.jp/entry/20221231/1672471506より取得しました。


checkstyle によるjavaの 循環複雑度( Cyclomatic Complexity Metrics)計測

久しぶりにjavaの cyclomatic complexity metrics の計測。

当初は、以前使用した sonarqube or pmd での計測を考えましたが、 sonarqube ver.9は elasticsearch を必要になっていましたし、 pmd も「循環複雑度のみの計測」が不明でしたので、今回は、checkstyle

参考url

install

といっても、jarをdownloadするのみです。

$ cd ~/local
$ wget https://github.com/checkstyle/checkstyle/releases/download/checkstyle-10.5.0/checkstyle-10.5.0-all.jar

config

https://gist.github.com/ryan0x44/c95718cc59e987dc2d44f629433d73b6

上記urlを参考にルールファイルである checkstyle_rule.xml を作成

$ vi ~/local/checkstyle_rule.xml
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name = "Checker">
  <property name="charset" value="UTF-8"/>
  <module name="TreeWalker">
    <module name="CyclomaticComplexity">
      <property name="max" value="1"/>
    </module>
  </module>
</module>

実行

先程のxml閾値=1にしていますので、かなりの量のエラーが表示されますが、 以下の通りです。

$ java -jar /home/end0tknr/local/checkstyle-10.5.0-all.jar \
  -c /home/end0tknr/local/checkstyle_rule.xml \
  /home/end0tknr/tmp/X-CORE

[ERROR] /SBAG029ServiceImpl.java:76:5: Cyclomatic Complexity is 3 (max allowed is 1). [CyclomaticComplexity]
[ERROR] /SBAG032ServiceImpl.java:71:5: Cyclomatic Complexity is 4 (max allowed is 1). [CyclomaticComplexity]
[ERROR] /SBAG033ServiceImpl.java:86:5: Cyclomatic Complexity is 2 (max allowed is 1). [CyclomaticComplexity]
[ERROR] /SBAG033ServiceImpl.java:128:5: Cyclomatic Complexity is 2 (max allowed is 1). [CyclomaticComplexity]



以上の内容はhttps://end0tknr.hateblo.jp/entry/20221231/1672471506より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14