はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【C#】Roslyn Analyzerがビルド時間に与える影響を調べる方法

はじめに

Roslyn Analyzerはコードの品質を保つためには欠かせない存在です。ただ多数のAnalyzerを導入すると、ビルド時間がやたら長かったりと開発者体験を損なってしまう可能性があるのもまた事実です。

learn.microsoft.com

今回の記事ではRoslyn Analyzerがビルド時間に与える影響を調べること手法を紹介したいと思います。

調べ方

ログファイルを出力させる

解析ログを出力させるには、MS BuildにReportAnalyzerというプロパティを渡す必要があります。

<!-- 〇〇.csproj -->
<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <ReportAnalyzer>true</ReportAnalyzer>
...

後は/binaryLogger(略は/bl)を渡してビルドすることで、msbuild.binlogというファイルを出力できます。このファイルにRoslyn Analyzerでの処理にかかった時間も記録されています。

$ dotnet build /bl

キャッシュが効いているとAnalyzerの計測が正しくできないこともあるので、適宜$ dotnet cleanを実施すると良いと思います。

msbuild.binlogの確認方法

MSBuild Structured Log Viewerを用いることでmsbuild.binlogの中身を調べることができます。

msbuildlog.com

まだインストールしていない人はサイトにアクセスして、インストールを行なってください。

msbuildlog.com

Macの方は以下にインストール手法が記述されています。
msbuild/documentation/wiki/Binary-Log.md at main · dotnet/msbuild · GitHub

Analyzer Summaryを調べる

macの場合はStructuredLogViewer.appを開き、出力されたmsbuild.binlogを読み取ります。

Analyzer Summary

Analyzer Summaryを見ると、どのAnalyzerがどれくらい時間がかかっているかがランキングで並んでいることが確認できます。