あのResharperやRiderで使われている静的コード分析をCI(=コマンドライン)で、それも無料で使えちゃうんです。 CIで実行することで、PullRequestの自動チェックで走らせて未然に事故を防ぐことが出来ます。
静的コード分析って?
コードを分析して、以下のようなことを教えてくれる機能です。
- nullの可能性がある変数にアクセスしている
- 実行効率の悪い書き方になっている(同じGetComponentを複数回呼んでいるなど)
- ネーミングルールの間違い(lowerCamelで書くべきメンバ変数をUpperCamelで書いている等)
- UnityEngine.Objectに対して?.とか書いちゃってる
- 絶対true/falseになるif文がないか
- なんとシェーダーの中身もチェックしてくれる!
などなど。
何よりUnityならではの分析もしてくれるのがめちゃめちゃ便利です。
注意点
2021/04/13現在、UnityExtensionはCommandLineTool 2020.3(最新版は2021)でしか動作しません。動くようになりました。(2022/01/05)2021/04/13現在、UnityExtensionはWindows環境でしか動作しません。動くようになりました。(2024/04/07)
macでもlinuxでも動きます。すごい!!!
インストール
公式の手順
公式のインストール手順はこちら。
dotnet環境が整っていれば、 dotnet tool install -g JetBrains.ReSharper.GlobalTools
だけでオッケー
使い方
あとはドキュメント通り使うだけです!
最小ではこんな感じです。
jb inspectcode Project.sln --build --eXtensions=JetBrains.Unity --output=inspectcode.txt
突っ込んでるPluginのコードは対象外にしたい、みたいな時は
--exclude="Assets/**/Generated/**/*.cs"
などとしてやれば除外出来ます。
出力
inspectcode.txtに以下のような出力を得ることができます。
何もない時は Solution Unity\Unity.sln
という1行だけ出力されたり、何も出力されなかったりします。(なぜ?)
Solution Unity\Unity.sln Project Assembly-CSharp-Editor Assets\Scripts\Editor\Hoge.cs:47 Local variable 'a' is only assigned but its value is never used