LoginSignup
6
5

More than 3 years have passed since last update.

Visual Studio for Mac 2019にStyleCopAnalyzersを導入する

Posted at

この記事を読んでできるようになること

Visual Studio for Mac 2019にStyleCopAnalyzersを導入し、C#コードの静的解析ができる。

きっかけ

Unity開発をしているので、綺麗なコードを書くためにVisual Studio for Macに静的開発ツールを導入したくなった。そこで色々と調べたところStyleCopAnalyzersがヒット。
すぐに導入を試みたがNugetパッケージを導入する方法、GitHubから直接slnをもらってきて導入する方法、どれもうまくStyleCopAnalyzersが機能しなかった。
調べてもWindows版のVisual Studioしか良さそうな記事がなく困ったので
これを機にVS for Macへの導入法をまとめる。
(基本的にVisual Studio for Macは記事が少ない…)

使用環境

macOS Big Sur : Version 11.2.3
Visual Studio for Mac 2019: Version 8.9.4 (build 25)

導入する

非常に簡単。
StyleCopAnalyzersのGitHubからDirectory.Build.propsをダウンロードし、これを静的解析を適用させたいhoge.csproj、fuga.slnと同じ階層に配置するだけ。

Directory.Build.propsは、複数のプロジェクトに共通の設定を一括反映するために使うらしい。自分は次のQiitaを参考にした。
C#の全プロジェクトに便利な設定を一括反映する

詳細を設定する

StyleCopAnalyzersは英語圏での使用を想定されているからなのか、デフォルトでは「コメントの文末にピリオドをつけろ〜」など日本で使う上では不必要な指摘まで入る。快適に使うにはルールごとに警告かエラーか、適用外かなどを自由にカスタマイズする必要がある。
具体的にどんなルールがあるのかは、StyleCopAnalyzersのGitHubDocから確認してほしい。

カスタマイズしたいルールを決めたらVS for Macを開き、左上のVSメニューから
ユーザー設定 > ソースの解析 > C# > コード規則
ここに次のようにカスタマイズしたいもののみルールを書いていく(記載のないものはデフォルトでは警告が適用される)
コピペ用に下に自分が試しに用いたものを記載するが、使用するときは適宜カスタマイズしてほしい。

<RuleSet Name="Global Rules" ToolsVersion="12.0">
    <Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers">
      <Rule Id="SA1600" Action="Error" />
      <Rule Id="UNT0001" Action="Error" /><!-- 不要なUpdate文の削除 -->  
      <Rule Id="UNT0002" Action="Error" /><!-- tagの比較制約 --> 
    </Rules>
</RuleSet>

スクリーンショット 2021-04-05 23.31.14.png

上の例だとSA1600をエラーとして表示する設定にしたので、コード上では次のような指摘が入る(サマリーを書いてねという指摘)
スクリーンショット 2021-04-05 23.42.00.png

ちなみにしれっと書いたが、このコード規則のところには
IDEやCS、UNTから始まるコード規則も追加できる。これらも規則コードで色々検索して好みのものを追加してほしい。

最後に

GitHub Actionsや、Unityエディタから静的解析の結果を確認するプラグインなど色々調べたが結局どれが一番使い心地がいいのかわからん…
Unityによるチーム開発でコードを綺麗に書くために導入しているおすすめの方法があればぜひ教えてください

ここまで読んでいただきありがとうございました。
この記事が何かお役に立てれば幸いです。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5