swiftlintみたいなのをkotlin言語でもやってみたい!
なので、似たようなのを探したところdetektが良さげ。
Kotlinでdetektを使って複雑度を測るの記事が大変わかりやすかったです。
#インストール
まずは公式サイトを確認。
git clone https://github.com/arturbosch/detekt
cd detekt
./gradlew build shadowJar
java -jar detekt-cli/build/libs/detekt-cli-[version]-all.jar --help
※javaが入ってないと、もちろんエラーがでます。
でも最近どっからjavaとって来たらいいかよくわからないんですよね…。
oracleがライセンス買い取ったみたいで無償で使えるのかよくわからない…。
自分は、AdoptOpenJDKを入れました。
#コード解析ルール
コード解析ルールは、以下の公式サイトにわかりやすくまとまっていますね。
https://arturbosch.github.io/detekt/comments.html
…さっぱり読めないです。はい。
#コード解析ルールの定義
解析ルールの定義ファイルは、以下に存在しています。
<git clone したディレクトリ>/detekt/detekt-cli/build/resources/main
こいつをコピーして新しいファイルを作れば、オリジナルの定義ファイルになります。
自分はcomplexity_ComplexMethod(循環的複雑度)の数値を
15(デフォルト)から10に変えたかったので以下の通り変更しています。
#解析実行
あとは以下コマンドを実行すれば解析できます。
java -jar <./gradlew build shadowJarで固めたjarのパス> -c <ルールを記載したファイルのパス> -i <解析したいファイルのパス>
解析できた!
java -jar <./gradlew build shadowJarで固めたjarのパス> -c <ルールを記載したファイルのパス>
をエイリアスに設定しておくと、実行するコマンドが少なくなって便利かもしれないです。
【Mac】エイリアス(ターミナルコマンドのショートカット)の設定