きゅぶろぐ

きゅぶんずの ぶろぐができて べんりだな

CIでUnity向けの静的コード分析を走らせる

あのResharperやRiderで使われている静的コード分析をCI(=コマンドライン)で、それも無料で使えちゃうんです。 CIで実行することで、PullRequestの自動チェックで走らせて未然に事故を防ぐことが出来ます。

静的コード分析って?

コードを分析して、以下のようなことを教えてくれる機能です。

  • nullの可能性がある変数にアクセスしている
  • 実行効率の悪い書き方になっている(同じGetComponentを複数回呼んでいるなど)
  • ネーミングルールの間違い(lowerCamelで書くべきメンバ変数をUpperCamelで書いている等)
  • UnityEngine.Objectに対して?.とか書いちゃってる
  • 絶対true/falseになるif文がないか

などなど。
何よりUnityならではの分析もしてくれるのがめちゃめちゃ便利です。

注意点

  • 2021/04/13現在、UnityExtensionはWindows環境でしか動作しません。
  • 2021/04/13現在、UnityExtensionはCommandLineTool 2020.3(最新版は2021)でしか動作しません。 動くようになりました。(2022/01/05)

対応中のようなので、時間が解決してくれるでしょう。

インストール

この記事を書いた時点ではインストール手順が面倒だったのですが、最新版では簡単になったため中身のない記事になってます。(2022/01/05)

公式の手順

公式のインストール手順はこちら。
公式手順では.NET Core ツールとしての ReSharper コマンドラインツールをインストールして、jb コマンドで InspectCode を実行することもできます。 と書いてありますが、Extensionの導入が出来ないため手動でインストールしましょう。

ダウンロード

CommandLineToolのダウンロードページはこちら

UnityExtensionの導入

Resharper UnitySupportの最新版をダウンロードし、nupkgをinspectcode.exeと同じディレクトリに突っ込みます。

使い方

あとはドキュメント通り使うだけです!
最小ではこんな感じです。

inspectcode.exe Project.sln --output=inspectcode.txt --no-build

突っ込んでるPluginのコードは対象外にしたい、みたいな時は

--exclude="Assets/**/Generated/**/*.cs"

などとしてやれば除外出来ます。