Unity/C#の無料で使える静的解析ツール
Unity/C#の無料で使える静的解析ツール
いくつか導入してみたメモ。
事前準備
Win/Macどちらの環境でも可能です。
UnityプロジェクトにRiderのPackageをインストールする
静的解析にはプロジェクトのソリューションファイル(.sln)が必要になります。
UnityをEditorで開ける環境ならPreferences-ExternalToolsで生成できます。
CI環境の場合はPackageのJetBrains Rider Editor
で生成するのが楽です。
Package追加のみで、コードを変更する必要はありません。
{Unity} -batchmode -quit -projectPath {ProjectPath} -executeMethod Packages.Rider.Editor.RiderScriptEditor.SyncSolution
静的解析を行うマシンに.Netをインストールする
dotnet
コマンドが必要なので.Net 8.0
インストールしておいてください。
tools
はデフォルトで$HOME/.dotnet/tools
に配置されるので必要ならパスを通しておいてください。
dotnetビルドできるか確認
Unityプロジェクトでソリューションファイルを出力しておいてください。
dotnet build ${hoge.sln} --no-incremental
--no-incremental
はクリーン再ビルドのオプションです。
ReSharper Command Line Tools
JetBrainsの静的解析とクリーンアップ(書式の修正、構文スタイルの適用、冗長性の削除など)が行えるCLIツールです。JetBrains.Unity
)を指定します。
JetBrains.Unity
とこのツールは、バージョンを合わせて使う必要があります。
静的解析
出力結果の形式は指定可能なのでJenkinsなどのCIと連携可能です。
jb inspectcode --project=${pj_name} -x=JetBrains.Unity ${hoge.sln}
--project
: 解析するプロジェクトを制限可能。slnのProjectに含まれる名前を指定
もっと絞りたい場合は--include=Assets/Hoge/**/*.cs
で制限も可能。
-x
: JetBrainsのPluginを使用できる。PluginIDを指定。
クリーンアップ
自動でコードが整形/変更されるので実行/対象の指定には注意してください。
jb cleanupcode -x=JetBrains.Unity ${hoge.sln}
--include/--exclude
で制限可能です。
VS Code向け拡張機能
静的解析、クリーンアップが行え、解析結果を一覧で表示してくれます。
SonarQube
サーバーにインストールして使用できる静的解析ツールです。
さまざまな言語やCI/CDとの連携に対応しています。
機能を絞ったCommunityBuildなら無料で使用できます。
インストール&プロジェクト作成は簡単なので公式ドキュメントを参考にしてください。
C#の静的解析を行う場合は.Net
版の解析ツールもダウンロードしておいてください。
SonarScanner for .NET
# 解析準備を行う
dotnet-sonarscanner begin \
/k:\"${pj_name}\" \
/d:sonar.scanner.scanAll=false \
/d:sonar.host.url=\"${sonarqube_host_url}\" \
/d:sonar.token=${sonarqube_token}
# プロジェクトをビルド
dotnet build ${hoge.sln} --no-incremental
# 解析結果を送信
dotnet-sonarscanner end /d:sonar.token=${sonarqube_token}
VS Code向け拡張機能
SonarQubeサーバーを介さず、単独で静的解析が行えるようになります。
作成したSonarQubeのプロジェクトと連携することも可能です。
ちょっと時間かかるように思えますが、開いているファイルを自動で解析してくれます。
簡単に解析が行えるのでオススメです。
VSCode上で内容を表示してくれるのが良い。
Roslynator
Roslynで動作するC#用のコード解析ツールセットです。
静的解析以外にもいろいろとできます。
roslynator analyze ${hoge}.sln -o ${output_xml}
UnityがRoslynを公式に対応しているのはVisual Studio
とJetBrains Rider
のみです。
VS Codeで動かすにはC# Dev Kit
をDisableにする必要があります=Unityへのデバッグ接続ができなくなります。
参考ページ
Discussion