Open6

Unity Roslynめも

Otokami_OrokabuOtokami_Orokabu

Unity で Roslyn のはじめかた

Roslynとは

https://ja.wikipedia.org/wiki/Roslyn

利用可能Ver : Unity 2020.2〜

Unity 公式 : Roslyn アナライザーとルールセットファイル
https://docs.unity3d.com/ja/2021.1/Manual/roslyn-analyzers.html

Unity 公式 : Roslyn analyzers and source generators
2021.3からは、ソースジェネレーターについての言及もある
https://docs.unity3d.com/ja/2021.3/Manual/roslyn-analyzers.html

VSCodeでRoslynを使う場合

  1. Project Rootに omnisharp.json を作成する
  2. ↓コピペする
{
   "RoslynExtensionsOptions": {
       "EnableAnalyzersSupport": true,
       "LocationPaths": ["Assets/Analyzers"]
   }
}
  • "EnableAnalyzersSupport" Analyzerを有効にするか?
  • "LocationPaths" Analyzerの場所

とりあえずAnalyzerを使う方法

公式引用

  1. Unity プロジェクトの Assets フォルダー (または Assets フォルダー内にネストになっている任意のフォルダー) に移動します。
  2. エディターで .dll ファイルを選択します。
  3. Plugin Inspector の Select platforms for plugin で、 Any Platform を無効にします。Include platforms のセクションで、 Editor と Standalone のプラットフォームを無効にします。
  • すべてのプラットフォームを無効にする
  1. すべての DLL に新しい アセットラベル として RoslynAnalyzer を与えます。
Otokami_OrokabuOtokami_Orokabu

BannedApiAnalyzers 設定方法

Analyzerを取得、配置する

  1. BannedApiAnalyzerをダウンロードする
  1. ダウンロードした.nupkg``の拡張子を.zip```にリネームし解凍する
  2. root - analyzers - dotnet - cs フォルダからMicrosoft.CodeAnalysis.BannedApiAnalyzers.dllMicrosoft.CodeAnalysis.CSharp.BannedApiAnalyzers.dllをUnityProjectに配置する

シンボル定義テキストファイル(ファイル名は一例)

  • ProjectRootにBannedSymbols.txtを作成する
    • Analyzerを入れいているフォルダに一緒にしても良いかも(UnityEditorから微妙にアクセスしやすいかも)
    • 確認用に下記をコピペ
M:UnityEngine.Debug.Log(System.Object);Debug.Log MyLoggerを使用してください
M:UnityEngine.Debug.Log(System.Object,UnityEngine.Object);Debug.Log MyLoggerを使用してください

.propsファイル(ファイル名は一例)

  1. ProjectRootに BannedSymbols.propsを作成する
    • <AdditionalFiles> にBannedSymbosl.txtを追記するためのprops
  2. 下記をコピペする
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <ItemGroup>
   <AdditionalFiles Include="$(ProjectDir)\BannedSymbols.txt" />
 </ItemGroup>
</Project>
  • \¥ は違う(1敗)

csprojを編集する

直接設定もできるが面倒なので

  1. CsprojModifierをプロジェクトに追加する
    https://github.com/Cysharp/CsprojModifier
  2. Project Settings - Editor - C# Project Modifierを選択
  3. Additional project importsで +を押下しBannedSymbols.propsを追加する
  4. Regenerate project filesボタンを押下する

確認する

Otokami_OrokabuOtokami_Orokabu

小ネタ

  • Unity 公式にも記載があるがVisualStudio,JetBrains Riderでは、特に操作の必要はない
  • VSCode はC#拡張のomnisharp,mono,.net core sdk のセットアップを終わらせておくこと
  • VSCodeのインテリセンスが切れる場合、下記を.vscode - settings.jsonに追記を試す
 "omnisharp.useModernNet": true
  • EditorConsoleにも警告を表示したい...
  • .editorconfigからも警告を制御できるらしい
  • ルールセットの話
  • .asmdef の話