From 27da6c956f3b8a8c144d7a82c721f5e1fb7f1d03 Mon Sep 17 00:00:00 2001 From: VDH Date: Fri, 13 Mar 2026 12:34:01 +0700 Subject: [PATCH] analyzer --- .editorconfig | 25 + Assets/Analyzers.meta | 8 + Assets/Editor/AddAnalyzerPostprocessor.cs | 157 ++ .../Editor/AddAnalyzerPostprocessor.cs.meta | 2 + FIX_ANALYZER_BLUE_COLOR.md | 91 + FIX_ANALYZER_DISAPPEARING.md | 108 ++ FIX_ANALYZER_ERROR.md | 101 ++ HOW_TO_USE_ANALYZER.md | 171 ++ SETUP_UNITY_EDITOR_ANALYZER.md | 174 ++ TEST_ANALYZER.md | 125 ++ UnityEditorOnlyAnalyzer/QUICK_START.md | 61 + UnityEditorOnlyAnalyzer/README.md | 88 + .../UnityEditorOnlyUsageAnalyzer.cs | 301 ++++ .../UnityEditorOnlyAnalyzer.deps.json | 320 ++++ .../UnityEditorOnlyAnalyzer.dll | Bin 0 -> 9216 bytes .../UnityEditorOnlyAnalyzer.xml | 8 + ...tandard,Version=v2.0.AssemblyAttributes.cs | 4 + .../UnityEditorOnlyAnalyzer.AssemblyInfo.cs | 22 + ...ditorOnlyAnalyzer.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 16 + .../UnityEditorOnlyAnalyzer.assets.cache | Bin 0 -> 16274 bytes ...nlyAnalyzer.csproj.AssemblyReference.cache | Bin 0 -> 57595 bytes ...nlyAnalyzer.csproj.CoreCompileInputs.cache | 1 + ...orOnlyAnalyzer.csproj.FileListAbsolute.txt | 12 + .../UnityEditorOnlyAnalyzer.dll | Bin 0 -> 9216 bytes .../UnityEditorOnlyAnalyzer.xml | 8 + ...ditorOnlyAnalyzer.csproj.nuget.dgspec.json | 86 + ...ityEditorOnlyAnalyzer.csproj.nuget.g.props | 22 + ...yEditorOnlyAnalyzer.csproj.nuget.g.targets | 7 + .../obj/project.assets.json | 1457 +++++++++++++++++ .../obj/project.nuget.cache | 22 + WHY_STILL_BLUE.md | 52 + claude.md | 79 + 33 files changed, 3529 insertions(+) create mode 100644 .editorconfig create mode 100644 Assets/Analyzers.meta create mode 100644 Assets/Editor/AddAnalyzerPostprocessor.cs create mode 100644 Assets/Editor/AddAnalyzerPostprocessor.cs.meta create mode 100644 FIX_ANALYZER_BLUE_COLOR.md create mode 100644 FIX_ANALYZER_DISAPPEARING.md create mode 100644 FIX_ANALYZER_ERROR.md create mode 100644 HOW_TO_USE_ANALYZER.md create mode 100644 SETUP_UNITY_EDITOR_ANALYZER.md create mode 100644 TEST_ANALYZER.md create mode 100644 UnityEditorOnlyAnalyzer/QUICK_START.md create mode 100644 UnityEditorOnlyAnalyzer/README.md create mode 100644 UnityEditorOnlyAnalyzer/UnityEditorOnlyUsageAnalyzer.cs create mode 100644 UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.deps.json create mode 100644 UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.dll create mode 100644 UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.xml create mode 100644 UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs create mode 100644 UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.AssemblyInfo.cs create mode 100644 UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.AssemblyInfoInputs.cache create mode 100644 UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.assets.cache create mode 100644 UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.csproj.AssemblyReference.cache create mode 100644 UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.csproj.CoreCompileInputs.cache create mode 100644 UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.csproj.FileListAbsolute.txt create mode 100644 UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.dll create mode 100644 UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.xml create mode 100644 UnityEditorOnlyAnalyzer/obj/UnityEditorOnlyAnalyzer.csproj.nuget.dgspec.json create mode 100644 UnityEditorOnlyAnalyzer/obj/UnityEditorOnlyAnalyzer.csproj.nuget.g.props create mode 100644 UnityEditorOnlyAnalyzer/obj/UnityEditorOnlyAnalyzer.csproj.nuget.g.targets create mode 100644 UnityEditorOnlyAnalyzer/obj/project.assets.json create mode 100644 UnityEditorOnlyAnalyzer/obj/project.nuget.cache create mode 100644 WHY_STILL_BLUE.md create mode 100644 claude.md diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..d6869adadc --- /dev/null +++ b/.editorconfig @@ -0,0 +1,25 @@ +# EditorConfig for Unity Project +root = true + +[*] +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.cs] +indent_style = space +indent_size = 4 +end_of_line = crlf + +# Unity Editor Only Usage Analyzer +# ERROR (màu đỏ) khi sử dụng code trong #if UNITY_EDITOR từ code không có directive +dotnet_diagnostic.UNITY_EDITOR_ONLY_USAGE.severity = error + +# Các rule khác cho Unity +dotnet_analyzer_diagnostic.category-Unity.severity = warning + +[*.{asmdef,asmref}] +indent_size = 2 + +[*.{json,md}] +indent_size = 2 diff --git a/Assets/Analyzers.meta b/Assets/Analyzers.meta new file mode 100644 index 0000000000..bc69ce053c --- /dev/null +++ b/Assets/Analyzers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d6389bfe41ba69e42991434d87c1319f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/AddAnalyzerPostprocessor.cs b/Assets/Editor/AddAnalyzerPostprocessor.cs new file mode 100644 index 0000000000..1ff01a4e44 --- /dev/null +++ b/Assets/Editor/AddAnalyzerPostprocessor.cs @@ -0,0 +1,157 @@ +#if UNITY_EDITOR +using System.IO; +using UnityEditor; +using UnityEngine; + +/// +/// Tự động thêm UnityEditorOnlyAnalyzer vào các .csproj files khi Unity generate chúng +/// Analyzer phải ở project root, KHÔNG trong Assets/ để tránh Unity load như runtime assembly +/// +public class AddAnalyzerPostprocessor : AssetPostprocessor +{ + private static string GetAnalyzerPath() + { + string projectRoot = Path.GetDirectoryName(Application.dataPath); + string analyzerPath = Path.Combine(projectRoot, "UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.dll"); + return Path.GetFullPath(analyzerPath); + } + + /// + /// Unity gọi method này cho từng .csproj file được generate + /// Return content đã được modify - Unity sẽ ghi content này vào file + /// + public static string OnGeneratedCSProject(string path, string content) + { + string fileName = Path.GetFileName(path); + + // Chỉ thêm vào các runtime assemblies, không thêm vào Editor assemblies + if (fileName != "Assembly-CSharp.csproj" && fileName != "Assembly-CSharp-firstpass.csproj") + { + return content; + } + + // Kiểm tra xem đã có analyzer chưa + if (content.Contains("UnityEditorOnlyAnalyzer.dll")) + { + return content; + } + + string analyzerPath = GetAnalyzerPath(); + + // Kiểm tra analyzer có tồn tại không + if (!File.Exists(analyzerPath)) + { + Debug.LogWarning($"[UnityEditorOnlyAnalyzer] Analyzer not found at {analyzerPath}. " + + "Please build the analyzer first: cd UnityEditorOnlyAnalyzer && dotnet build -c Release"); + return content; + } + + // Bug fix 1: Tìm "" không có dấu cách ở đầu + int lastProjectTag = content.LastIndexOf(""); + if (lastProjectTag < 0) + { + Debug.LogWarning($"[UnityEditorOnlyAnalyzer] Could not find tag in {fileName}"); + return content; + } + + // Bug fix 2: Không double-escape backslash trong XML - XML tự động escape + // Chỉ cần đảm bảo path có backslash đúng format Windows + string analyzerInclude = $@" + + +"; + + string modifiedContent = content.Substring(0, lastProjectTag) + analyzerInclude; + Debug.Log($"[UnityEditorOnlyAnalyzer] ✅ Added analyzer to {fileName}"); + + return modifiedContent; + } + + /// + /// Public method để menu item có thể gọi thủ công + /// + public static void AddAnalyzerToProjects() + { + // Trigger Unity regenerate .csproj files để OnGeneratedCSProject được gọi + UnityEditorInternal.InternalEditorUtility.OpenFileAtLineExternal("", 0); + AssetDatabase.Refresh(); + + // Cũng gọi fallback method để đảm bảo + OnGeneratedCSProjectFiles(); + } + + /// + /// Backup method: Unity gọi method này sau khi generate tất cả .csproj files + /// Chỉ dùng nếu OnGeneratedCSProject không hoạt động + /// + private static void OnGeneratedCSProjectFiles() + { + // Fallback: patch files sau khi đã được generate + string projectRoot = Path.GetDirectoryName(Application.dataPath); + string analyzerPath = GetAnalyzerPath(); + + if (!File.Exists(analyzerPath)) + { + Debug.LogWarning($"[UnityEditorOnlyAnalyzer] Analyzer not found at {analyzerPath}. " + + "Please build the analyzer first: cd UnityEditorOnlyAnalyzer && dotnet build -c Release"); + return; + } + + string[] csprojFiles = Directory.GetFiles(projectRoot, "*.csproj", SearchOption.TopDirectoryOnly); + bool anyModified = false; + + foreach (string csprojFile in csprojFiles) + { + string fileName = Path.GetFileName(csprojFile); + if (fileName == "Assembly-CSharp.csproj" || fileName == "Assembly-CSharp-firstpass.csproj") + { + string content = File.ReadAllText(csprojFile); + + if (!content.Contains("UnityEditorOnlyAnalyzer.dll")) + { + // Bug fix: Tìm "" không có dấu cách + int lastProjectTag = content.LastIndexOf(""); + if (lastProjectTag >= 0) + { + string analyzerInclude = $@" + + +"; + + content = content.Substring(0, lastProjectTag) + analyzerInclude; + File.WriteAllText(csprojFile, content); + anyModified = true; + Debug.Log($"[UnityEditorOnlyAnalyzer] ✅ Added analyzer to {fileName} (fallback method)"); + } + } + } + } + + if (anyModified) + { + Debug.Log("[UnityEditorOnlyAnalyzer] ✅ Analyzer added to .csproj files! Please reload your IDE."); + } + } +} + +/// +/// Menu item để trigger thủ công việc thêm analyzer +/// +public class UnityEditorOnlyAnalyzerMenu +{ + [MenuItem("Tools/Unity Editor Only Analyzer/Add Analyzer to Projects")] + public static void AddAnalyzerManually() + { + AddAnalyzerPostprocessor.AddAnalyzerToProjects(); + } + + [MenuItem("Tools/Unity Editor Only Analyzer/Regenerate Project Files")] + public static void RegenerateProjectFiles() + { + // Trigger Unity regenerate .csproj files + UnityEditorInternal.InternalEditorUtility.OpenFileAtLineExternal("", 0); + AssetDatabase.Refresh(); + Debug.Log("[UnityEditorOnlyAnalyzer] Project files regeneration triggered. Check Console for analyzer messages."); + } +} +#endif diff --git a/Assets/Editor/AddAnalyzerPostprocessor.cs.meta b/Assets/Editor/AddAnalyzerPostprocessor.cs.meta new file mode 100644 index 0000000000..bb0cd62190 --- /dev/null +++ b/Assets/Editor/AddAnalyzerPostprocessor.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f4597c784f3bab545bcae652cd8541d9 \ No newline at end of file diff --git a/FIX_ANALYZER_BLUE_COLOR.md b/FIX_ANALYZER_BLUE_COLOR.md new file mode 100644 index 0000000000..d15638b179 --- /dev/null +++ b/FIX_ANALYZER_BLUE_COLOR.md @@ -0,0 +1,91 @@ +# Cách Làm Analyzer Hiển Thị Màu Đỏ (Error) + +Analyzer đã được đổi từ Warning → Error nhưng Visual Studio vẫn hiển thị màu xanh do cache. + +## Bước 1: Xóa Cache Visual Studio + +```powershell +# Đóng Visual Studio trước khi chạy +Remove-Item "E:\Projects\perfect-world-unity\.vs" -Recurse -Force -ErrorAction SilentlyContinue +Remove-Item "E:\Projects\perfect-world-unity\obj" -Recurse -Force -ErrorAction SilentlyContinue +``` + +## Bước 2: Trigger Unity Regenerate .csproj + +Trong Unity Editor: +1. Tools > Unity Editor Only Analyzer > Regenerate Project Files +2. Hoặc: Assets > Open C# Project + +## Bước 3: Mở Visual Studio + +1. Đóng Visual Studio hoàn toàn (nếu đang mở) +2. Double-click vào `perfect-world-unity.sln` +3. Đợi Visual Studio load xong + +## Bước 4: Kiểm tra + +1. Mở file `CdlgQuickBar.cs` +2. Dòng 42: `GetCurPanel1()` sẽ có: + - Squiggly line màu đỏ + - Icon error màu đỏ bên trái margin + - Error List hiển thị error (không phải warning) + +## Nếu vẫn màu xanh + +### Kiểm tra 1: .csproj có analyzer mới không? + +Mở `Assembly-CSharp.csproj`, tìm dòng: +```xml + +``` + +Kiểm tra file modified date: +```powershell +(Get-Item "E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.dll").LastWriteTime +``` +Phải là thời gian vừa build (vài phút trước). + +### Kiểm tra 2: Visual Studio Options + +1. Tools > Options +2. Text Editor > C# > Advanced +3. Đảm bảo "Enable full solution analysis" = checked +4. Đảm bảo "Run code analysis in separate process" = checked + +### Kiểm tra 3: Error List Settings + +1. View > Error List +2. Đảm bảo "Build + IntelliSense" được chọn (không chỉ "Build Only") +3. Filter: đảm bảo không filter out errors + +### Kiểm tra 4: Severity trong EditorConfig + +File `.editorconfig` có thể override severity: +```ini +# Nếu có dòng này, xóa đi hoặc đổi thành error +dotnet_diagnostic.UNITY_EDITOR_ONLY_USAGE.severity = error +``` + +## Cách test nhanh + +Tạo file test đơn giản: + +```csharp +// Assets/TestError.cs +#if UNITY_EDITOR +public class TestEditor +{ + public static void TestMethod() { } +} +#endif + +public class TestRegular +{ + public void Test() + { + TestEditor.TestMethod(); // Phải có error màu đỏ ở đây + } +} +``` + +Nếu file test này cũng màu xanh → vấn đề là VS cache hoặc settings. diff --git a/FIX_ANALYZER_DISAPPEARING.md b/FIX_ANALYZER_DISAPPEARING.md new file mode 100644 index 0000000000..88ca73f67d --- /dev/null +++ b/FIX_ANALYZER_DISAPPEARING.md @@ -0,0 +1,108 @@ +# Giải Pháp: Analyzer Bị Mất Sau Khi Reload Visual Studio + +## Vấn Đề + +Unity tự động regenerate các file `.csproj` và **ghi đè** các thay đổi thủ công. Đây là lý do analyzer bị mất mỗi khi bạn mở lại Visual Studio. + +## Giải Pháp: Sử Dụng Cách Chính Thức Của Unity ✅ + +Unity hỗ trợ Roslyn Analyzers thông qua **Asset Labels**. Đây là cách đúng và bền vững nhất. + +### Bước 1: Analyzer Đã Được Copy Vào Assets ✅ + +Analyzer DLL đã được copy vào `Assets/Analyzers/UnityEditorOnlyAnalyzer.dll` + +### Bước 2: Thiết Lập Label trong Unity Editor + +1. **Mở Unity Editor** +2. **Tìm file** `Assets/Analyzers/UnityEditorOnlyAnalyzer.dll` trong Project window +3. **Click chọn file** này +4. **Mở Inspector** (nếu chưa mở) +5. **Ở phần Labels** (phía dưới Inspector): + - Click vào label dropdown + - Chọn hoặc tạo label: **`RoslynAnalyzer`** + - Hoặc gõ trực tiếp: `RoslynAnalyzer` + +6. **Unity sẽ tự động**: + - Thêm analyzer vào tất cả `.csproj` files + - Giữ analyzer ngay cả khi regenerate `.csproj` + +### Bước 3: Kiểm Tra + +Sau khi set label: + +1. **Kiểm tra Console** trong Unity - sẽ có log từ `AddAnalyzerPostprocessor` +2. **Mở file** `Assembly-CSharp.csproj` và tìm dòng có `UnityEditorOnlyAnalyzer.dll` +3. **Đóng và mở lại Visual Studio** - analyzer vẫn còn! + +## Script Tự Động + +Script `AddAnalyzerPostprocessor.cs` đã được cập nhật để: +1. **Tự động set label** `RoslynAnalyzer` khi Unity generate `.csproj` +2. **Backup method**: Vẫn thêm analyzer vào `.csproj` nếu label không hoạt động + +### Trigger Thủ Công (Nếu Cần) + +Nếu script không tự động chạy, bạn có thể trigger thủ công: + +1. **Trong Unity Editor**: + - Menu: **Tools > Unity Editor Only Analyzer > Add Analyzer to Projects** + - Hoặc: **Tools > Unity Editor Only Analyzer > Regenerate Project Files** + +2. **Kiểm tra Console** để xem log messages + +## Cách Hoạt Động + +### Cách Chính Thức (RoslynAnalyzer Label) + +Unity tự động: +1. Scan tất cả files trong `Assets/` có label `RoslynAnalyzer` +2. Thêm chúng vào `` trong `.csproj` +3. **Giữ nguyên** ngay cả khi regenerate `.csproj` + +### Backup Method (Script) + +Script `OnGeneratedCSProjectFiles()` sẽ: +1. Được gọi mỗi khi Unity generate `.csproj` +2. Tự động thêm analyzer vào `.csproj` nếu chưa có +3. Set label `RoslynAnalyzer` nếu chưa có + +## Troubleshooting + +### Analyzer Vẫn Bị Mất? + +1. **Kiểm tra label**: + - Chọn file `UnityEditorOnlyAnalyzer.dll` trong Unity + - Xem Inspector có label `RoslynAnalyzer` không + - Nếu không có, thêm thủ công + +2. **Kiểm tra file tồn tại**: + ```powershell + Test-Path "E:\Projects\perfect-world-unity\Assets\Analyzers\UnityEditorOnlyAnalyzer.dll" + ``` + +3. **Reimport asset**: + - Click phải vào `UnityEditorOnlyAnalyzer.dll` trong Unity + - Chọn "Reimport" + +4. **Trigger script thủ công**: + - Tools > Unity Editor Only Analyzer > Add Analyzer to Projects + - Kiểm tra Console để xem log + +5. **Kiểm tra Unity Version**: + - Label `RoslynAnalyzer` hỗ trợ từ Unity 2019.2+ + - Nếu dùng Unity cũ hơn, chỉ có thể dùng script method + +### Visual Studio Không Thấy Analyzer? + +1. **Đóng Visual Studio hoàn toàn** +2. **Xóa folder `obj`** trong project root (nếu có) +3. **Mở lại Visual Studio** +4. **Đợi project load xong** (có thể mất vài giây) +5. **Kiểm tra Error List** (View > Error List) + +## Kết Luận + +**Cách tốt nhất**: Sử dụng label `RoslynAnalyzer` - đây là cách chính thức của Unity và sẽ không bị mất khi regenerate `.csproj`. + +Script `AddAnalyzerPostprocessor.cs` sẽ tự động set label này mỗi khi Unity generate `.csproj`, nhưng bạn cũng có thể set thủ công trong Unity Editor để đảm bảo. diff --git a/FIX_ANALYZER_ERROR.md b/FIX_ANALYZER_ERROR.md new file mode 100644 index 0000000000..b8c81a62cb --- /dev/null +++ b/FIX_ANALYZER_ERROR.md @@ -0,0 +1,101 @@ +# Giải Pháp Lỗi: Analyzer DLL Không Load Được + +## Vấn Đề + +Khi đặt analyzer DLL trong `Assets/`, Unity cố gắng load nó như một **runtime assembly** và gặp lỗi: + +``` +Unable to resolve reference 'Microsoft.CodeAnalysis' +Unable to resolve reference 'System.Collections.Immutable' +Unable to resolve reference 'Microsoft.CodeAnalysis.CSharp' +``` + +## Nguyên Nhân + +**Roslyn Analyzers KHÔNG phải runtime assemblies** - chúng chỉ được IDE (Visual Studio/VS Code) sử dụng để phân tích code tại design-time. Unity runtime không có các dependencies của Roslyn (Microsoft.CodeAnalysis, etc.). + +## Giải Pháp ✅ + +### Analyzer Phải Ở NGOÀI Assets/ + +Analyzer DLL **KHÔNG được đặt trong `Assets/`**. Thay vào đó: + +1. **Đặt analyzer ở project root**: `UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/` +2. **Script tự động thêm vào `.csproj`** mỗi khi Unity generate +3. **IDE sẽ load analyzer** từ đường dẫn trong `.csproj` + +### Cách Hoạt Động + +``` +Unity Generate .csproj + ↓ +Script OnGeneratedCSProjectFiles() được gọi + ↓ +Script thêm analyzer vào .csproj với đường dẫn tuyệt đối + ↓ +Visual Studio/VS Code load analyzer từ .csproj + ↓ +Analyzer hoạt động trong IDE (không phải Unity runtime) +``` + +## Đã Sửa + +1. ✅ **Xóa analyzer khỏi `Assets/Analyzers/`** +2. ✅ **Cập nhật script** để chỉ sử dụng analyzer từ project root +3. ✅ **Script tự động thêm analyzer vào `.csproj`** mỗi khi Unity generate + +## Kiểm Tra + +1. **Mở Unity Editor** +2. **Kiểm tra Console** - không còn lỗi về analyzer DLL +3. **Trigger script**: + - Tools > Unity Editor Only Analyzer > Add Analyzer to Projects +4. **Mở `Assembly-CSharp.csproj`** - sẽ thấy analyzer được thêm: + ```xml + + ``` +5. **Reload Visual Studio** - analyzer sẽ hoạt động + +## Lưu Ý Quan Trọng + +- ✅ **ĐÚNG**: Analyzer ở project root, reference trong `.csproj` +- ❌ **SAI**: Analyzer trong `Assets/` - Unity sẽ cố load và gặp lỗi + +- ✅ **ĐÚNG**: IDE (Visual Studio) load analyzer từ `.csproj` +- ❌ **SAI**: Unity runtime load analyzer từ `Assets/` + +## Troubleshooting + +### Analyzer Vẫn Bị Mất Sau Reload? + +Script `OnGeneratedCSProjectFiles()` sẽ tự động thêm lại analyzer mỗi khi Unity generate `.csproj`. Nếu vẫn bị mất: + +1. **Kiểm tra script có chạy không**: + - Tools > Unity Editor Only Analyzer > Add Analyzer to Projects + - Xem Console để kiểm tra log + +2. **Kiểm tra đường dẫn analyzer**: + ```powershell + Test-Path "E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.dll" + ``` + +3. **Rebuild analyzer nếu cần**: + ```powershell + cd E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer + dotnet build -c Release + ``` + +### Visual Studio Không Thấy Analyzer? + +1. **Đóng Visual Studio hoàn toàn** +2. **Xóa folder `obj`** trong project root (nếu có) +3. **Mở lại Visual Studio** +4. **Đợi project load xong** +5. **Kiểm tra Error List** (View > Error List) + +## Kết Luận + +Analyzer đã được sửa để hoạt động đúng cách: +- ✅ Không còn trong `Assets/` (tránh Unity load như runtime assembly) +- ✅ Tự động thêm vào `.csproj` mỗi khi Unity generate +- ✅ IDE sẽ load và sử dụng analyzer để hiển thị warnings diff --git a/HOW_TO_USE_ANALYZER.md b/HOW_TO_USE_ANALYZER.md new file mode 100644 index 0000000000..40d6678e0e --- /dev/null +++ b/HOW_TO_USE_ANALYZER.md @@ -0,0 +1,171 @@ +# Hướng Dẫn Sử Dụng Unity Editor Only Analyzer + +## ✅ Tình Trạng Hiện Tại + +**Analyzer đã được thêm vào `Assembly-CSharp.csproj`!** + +File `.csproj` hiện đã có analyzer tại dòng 62: +```xml + +``` + +## 🔄 Cách Unity Generate .csproj Files + +Unity tự động generate các file `.csproj` khi: + +1. **Mở project lần đầu** - Unity scan tất cả scripts và tạo `.csproj` files +2. **Thêm/xóa script files** - Unity tự động regenerate +3. **Thay đổi External Script Editor** - Edit > Preferences > External Tools > External Script Editor +4. **Gọi menu "Open C# Project"** - Assets > Open C# Project (hoặc double-click vào `.csproj`) +5. **Reimport scripts** - Click phải vào folder Scripts > Reimport + +### Script `AddAnalyzerPostprocessor.cs` hoạt động như thế nào? + +Script này sử dụng `AssetPostprocessor.OnGeneratedCSProjectFiles()` - một callback mà Unity gọi **SAU KHI** đã generate xong tất cả `.csproj` files. + +Khi Unity generate `.csproj`: +1. Unity tạo các file `.csproj` mới (ghi đè file cũ) +2. Unity gọi `OnGeneratedCSProjectFiles()` +3. Script của chúng ta đọc file `.csproj` vừa tạo +4. Thêm analyzer vào `` nếu chưa có +5. Ghi lại file + +## 🚀 Cách Kích Hoạt Analyzer + +### Cách 1: Reload Project trong Visual Studio (Khuyến nghị) + +1. **Đóng Visual Studio** (nếu đang mở) +2. **Mở lại Visual Studio** bằng cách: + - Double-click vào `perfect-world-unity.sln` + - Hoặc trong Unity: Assets > Open C# Project +3. Visual Studio sẽ tự động load analyzer và hiển thị warnings + +### Cách 2: Trigger Unity Generate Lại .csproj + +Nếu analyzer chưa được thêm tự động, bạn có thể trigger Unity generate lại: + +**Trong Unity Editor:** +1. Mở Unity Editor +2. Vào menu: **Tools > Unity Editor Only Analyzer > Regenerate Project Files** +3. Hoặc: **Assets > Open C# Project** +4. Kiểm tra Console để xem log từ `AddAnalyzerPostprocessor` + +**Hoặc thủ công:** +1. Xóa các file `.csproj` và `.sln` trong project root +2. Mở lại Unity Editor +3. Unity sẽ tự động generate lại + +### Cách 3: Thêm Thủ Công (Đã làm) + +Analyzer đã được thêm trực tiếp vào `Assembly-CSharp.csproj` ở dòng 62. + +## ✅ Kiểm Tra Analyzer Đã Hoạt Động + +### Bước 1: Tạo File Test + +Tạo file `Assets/TestEditorOnly.cs`: + +```csharp +#if UNITY_EDITOR +public class EditorOnlyTestClass +{ + public static void EditorOnlyMethod() + { + UnityEngine.Debug.Log("This is editor only"); + } +} +#endif + +public class RegularTestClass +{ + public void TestMethod() + { + // ⚠️ Dòng này nên có warning trong Visual Studio + EditorOnlyTestClass.EditorOnlyMethod(); + } +} +``` + +### Bước 2: Mở trong Visual Studio + +1. Mở file `TestEditorOnly.cs` trong Visual Studio +2. Bạn sẽ thấy **squiggly line** (gạch chân màu vàng/xanh) dưới `EditorOnlyMethod()` +3. Hover chuột sẽ thấy warning: + ``` + UNITY_EDITOR_ONLY_USAGE: Method/Type 'EditorOnlyMethod' is only available in UNITY_EDITOR and may cause build errors + ``` + +### Bước 3: Kiểm Tra Error List + +Trong Visual Studio: +1. View > Error List (hoặc Ctrl+W, E) +2. Chọn "Warnings" tab +3. Tìm warning với ID `UNITY_EDITOR_ONLY_USAGE` + +## 🔧 Troubleshooting + +### Analyzer không hiển thị warnings? + +1. **Kiểm tra analyzer DLL tồn tại:** + ```powershell + Test-Path "E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.dll" + ``` + Phải trả về `True` + +2. **Kiểm tra .csproj có analyzer:** + - Mở `Assembly-CSharp.csproj` + - Tìm dòng có `UnityEditorOnlyAnalyzer.dll` + - Đảm bảo đường dẫn đúng + +3. **Reload project:** + - Đóng Visual Studio + - Xóa folder `obj` và `bin` trong project (nếu có) + - Mở lại Visual Studio + +4. **Kiểm tra Error List:** + - View > Error List + - Đảm bảo "Build + IntelliSense" được chọn + - Kiểm tra cả "Errors", "Warnings", "Messages" + +5. **Kiểm tra Output window:** + - View > Output + - Chọn "Show output from: Build" hoặc "IntelliSense" + - Xem có lỗi load analyzer không + +### Script không tự động thêm analyzer? + +1. **Kiểm tra script có trong project:** + - File phải ở `Assets/Editor/AddAnalyzerPostprocessor.cs` + - Phải có `#if UNITY_EDITOR` ở đầu + +2. **Trigger thủ công:** + - Tools > Unity Editor Only Analyzer > Add Analyzer to Projects + - Kiểm tra Console trong Unity để xem log + +3. **Kiểm tra đường dẫn:** + - Script dùng `Application.dataPath` để tìm project root + - Đảm bảo cấu trúc folder đúng: + ``` + perfect-world-unity/ + ├── Assets/ + ├── UnityEditorOnlyAnalyzer/ + │ └── bin/Release/netstandard2.0/ + │ └── UnityEditorOnlyAnalyzer.dll + └── Assembly-CSharp.csproj + ``` + +## 📝 Lưu Ý Quan Trọng + +1. **Analyzer chỉ hoạt động trong IDE** (Visual Studio/VS Code), không phải trong Unity Editor +2. **Cần reload project** sau khi thêm analyzer vào `.csproj` +3. **Unity có thể ghi đè `.csproj`** khi generate lại - script sẽ tự động thêm lại analyzer +4. **Warnings chỉ hiển thị khi code thực sự có vấn đề** - đảm bảo bạn đang test với code có `#if UNITY_EDITOR` + +## 🎯 Kết Luận + +Analyzer đã được cấu hình và sẵn sàng sử dụng! Chỉ cần: +1. Reload project trong Visual Studio +2. Tạo file test để kiểm tra +3. Xem warnings trong Error List + +Nếu vẫn không thấy warnings, hãy kiểm tra các bước troubleshooting ở trên. diff --git a/SETUP_UNITY_EDITOR_ANALYZER.md b/SETUP_UNITY_EDITOR_ANALYZER.md new file mode 100644 index 0000000000..0808184d79 --- /dev/null +++ b/SETUP_UNITY_EDITOR_ANALYZER.md @@ -0,0 +1,174 @@ +# Hướng Dẫn Thiết Lập Cảnh Báo #if UNITY_EDITOR + +Tài liệu này hướng dẫn cách thiết lập IDE để cảnh báo khi sử dụng hàm/method được wrap trong `#if UNITY_EDITOR` từ code không có directive này, có thể gây lỗi build. + +## Phương Pháp 1: Custom Roslyn Analyzer (Khuyến nghị) + +### Bước 1: Build Analyzer + +Mở PowerShell hoặc Command Prompt và chạy: + +```powershell +cd E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer +dotnet build -c Release +``` + +### Bước 2: Thêm Analyzer vào Unity Project + +Sau khi Unity generate lại `.csproj` files, bạn cần thêm analyzer vào các file `.csproj` chính: + +**Cách tự động (sử dụng AssetPostprocessor):** + +Tạo file `Assets/Editor/AddAnalyzerPostprocessor.cs`: + +```csharp +using System.IO; +using UnityEditor; +using UnityEngine; + +public class AddAnalyzerPostprocessor : AssetPostprocessor +{ + private static void OnGeneratedCSProjectFiles() + { + string analyzerPath = Path.GetFullPath("UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.dll"); + + if (!File.Exists(analyzerPath)) + { + Debug.LogWarning($"Analyzer not found at {analyzerPath}. Please build the analyzer first."); + return; + } + + string[] csprojFiles = Directory.GetFiles(".", "*.csproj", SearchOption.TopDirectoryOnly); + + foreach (string csprojFile in csprojFiles) + { + if (csprojFile.Contains("Assembly-CSharp") || csprojFile.Contains("Assembly-CSharp-firstpass")) + { + string content = File.ReadAllText(csprojFile); + + if (!content.Contains("UnityEditorOnlyAnalyzer.dll")) + { + string analyzerInclude = $@" + + + "; + + content = content.Replace(" ", analyzerInclude); + File.WriteAllText(csprojFile, content); + } + } + } + } +} +``` + +**Cách thủ công:** + +Mở file `Assembly-CSharp.csproj` và thêm vào trước thẻ ``: + +```xml + + + + +``` + +### Bước 3: Reload Project trong Visual Studio + +1. Đóng Visual Studio +2. Mở lại Unity project +3. Visual Studio sẽ tự động reload và áp dụng analyzer + +## Phương Pháp 2: Sử dụng EditorConfig (Hỗ trợ một phần) + +File `.editorconfig` đã được tạo ở root project. Một số IDE (như Visual Studio 2019+, VS Code với C# extension) sẽ đọc file này. + +Tuy nhiên, EditorConfig không thể tự động phát hiện `#if UNITY_EDITOR` - bạn vẫn cần Roslyn Analyzer. + +## Phương Pháp 3: Visual Studio Code Rules (Nếu dùng VS Code) + +Nếu bạn sử dụng VS Code với C# extension, analyzer sẽ tự động hoạt động sau khi được thêm vào `.csproj`. + +Đảm bảo bạn có extension: +- **C#** (Microsoft) +- **C# Dev Kit** (Microsoft) - Khuyến nghị + +## Kiểm Tra + +Sau khi setup, tạo file test: + +```csharp +// TestFile.cs +#if UNITY_EDITOR +public class EditorOnlyClass +{ + public static void EditorMethod() { } +} +#endif + +public class RegularClass +{ + public void Test() + { + EditorOnlyClass.EditorMethod(); // ⚠️ Nên có cảnh báo ở đây + } +} +``` + +Bạn sẽ thấy warning: +``` +UNITY_EDITOR_ONLY_USAGE: Method/Type 'EditorMethod' is only available in UNITY_EDITOR and may cause build errors +``` + +## Troubleshooting + +### Analyzer không hoạt động + +1. **Kiểm tra analyzer đã được build chưa:** + ```powershell + Test-Path "UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.dll" + ``` + +2. **Kiểm tra đường dẫn trong .csproj:** + - Đường dẫn phải là absolute path hoặc relative path đúng + - Đảm bảo file `.dll` tồn tại + +3. **Reload project:** + - Đóng và mở lại Visual Studio/VS Code + - Hoặc trong Visual Studio: Project > Reload Project + +4. **Kiểm tra Output window:** + - Trong Visual Studio, xem Output window để xem có lỗi load analyzer không + +### Warning không hiển thị + +1. Đảm bảo code thực sự có vấn đề (method trong `#if UNITY_EDITOR` được gọi từ code không có directive) +2. Kiểm tra Error List trong Visual Studio (View > Error List) +3. Đảm bảo Warning level không bị tắt trong project settings + +## Tùy Chỉnh Severity + +Bạn có thể thay đổi severity từ Warning sang Error trong `.editorconfig`: + +```ini +[*.cs] +dotnet_diagnostic.UNITY_EDITOR_ONLY_USAGE.severity = error +``` + +Hoặc disable hoàn toàn: + +```ini +[*.cs] +dotnet_diagnostic.UNITY_EDITOR_ONLY_USAGE.severity = none +``` + +## Lưu Ý + +- Analyzer chỉ hoạt động khi IDE đang mở project +- Unity build process có thể không hiển thị warnings này, nhưng Visual Studio sẽ hiển thị +- Nếu bạn sử dụng CI/CD, cần đảm bảo analyzer được include trong build process + +## Tài Liệu Tham Khảo + +- [Roslyn Analyzers Documentation](https://github.com/dotnet/roslyn-analyzers) +- [Unity Code Analysis](https://github.com/microsoft/Microsoft.Unity.Analyzers) diff --git a/TEST_ANALYZER.md b/TEST_ANALYZER.md new file mode 100644 index 0000000000..2657226e9e --- /dev/null +++ b/TEST_ANALYZER.md @@ -0,0 +1,125 @@ +# Kiểm Tra Analyzer Hoạt Động + +## Vấn Đề Hiện Tại + +Trong file `CdlgQuickBar.cs`: +- **Dòng 42**: `GetCurPanel1()` được gọi từ `UpdateShortcuts()` (KHÔNG có `#if UNITY_EDITOR`) +- **Dòng 440-444**: `GetCurPanel1()` được định nghĩa TRONG `#if UNITY_EDITOR` + +Đây là trường hợp analyzer cần phát hiện! + +## Các Bước Kiểm Tra + +### Bước 1: Đảm Bảo Analyzer Đã Được Thêm Vào .csproj ✅ + +Analyzer đã được thêm vào `Assembly-CSharp.csproj` tại dòng 62: +```xml + +``` + +### Bước 2: Rebuild Analyzer ✅ + +Analyzer đã được rebuild với logic cải thiện. + +### Bước 3: Reload Project trong Visual Studio + +**QUAN TRỌNG**: Bạn cần reload project để analyzer hoạt động: + +1. **Đóng Visual Studio hoàn toàn** +2. **Mở lại Visual Studio** bằng cách: + - Double-click vào `perfect-world-unity.sln` + - Hoặc từ Unity: Assets > Open C# Project +3. **Đợi Visual Studio load project** (có thể mất vài giây) + +### Bước 4: Kiểm Tra Warnings + +Sau khi Visual Studio load xong: + +1. **Mở file `CdlgQuickBar.cs`** trong Visual Studio +2. **Tìm dòng 42**: `int nCurPanel9 = GetCurPanel1();` +3. **Bạn sẽ thấy**: + - Squiggly line (gạch chân màu vàng/xanh) dưới `GetCurPanel1()` + - Hover chuột sẽ thấy warning message + +4. **Mở Error List**: + - View > Error List (hoặc Ctrl+W, E) + - Chọn tab "Warnings" + - Tìm warning với ID `UNITY_EDITOR_ONLY_USAGE` + - Message: `Method/Type 'GetCurPanel1' is only available in UNITY_EDITOR and may cause build errors` + +### Bước 5: Nếu Vẫn Không Thấy Warning + +#### Kiểm tra 1: Analyzer DLL tồn tại +```powershell +Test-Path "E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.dll" +``` +Phải trả về `True` + +#### Kiểm tra 2: .csproj có analyzer +Mở `Assembly-CSharp.csproj` và tìm dòng có `UnityEditorOnlyAnalyzer.dll` + +#### Kiểm tra 3: Output Window +1. View > Output +2. Chọn "Show output from: Build" hoặc "IntelliSense" +3. Xem có lỗi load analyzer không + +#### Kiểm tra 4: Force Reload +1. Đóng Visual Studio +2. Xóa folder `obj` trong project root (nếu có) +3. Mở lại Visual Studio + +#### Kiểm tra 5: Test với File Đơn Giản + +Tạo file test `Assets/TestAnalyzer.cs`: + +```csharp +#if UNITY_EDITOR +public class EditorOnlyTest +{ + public static void TestMethod() { } +} +#endif + +public class RegularClass +{ + public void Test() + { + EditorOnlyTest.TestMethod(); // ⚠️ Nên có warning ở đây + } +} +``` + +Nếu file test này có warning nhưng `CdlgQuickBar.cs` không có, có thể là vấn đề với logic analyzer. + +## Debug Analyzer + +Nếu analyzer vẫn không hoạt động, có thể cần debug: + +1. **Kiểm tra Visual Studio Version**: Analyzer cần Visual Studio 2019+ hoặc VS Code với C# extension +2. **Kiểm tra .NET SDK**: Cần .NET SDK để build analyzer +3. **Kiểm tra Logs**: Xem Output window trong Visual Studio + +## Giải Pháp Tạm Thời + +Nếu analyzer không hoạt động ngay, bạn có thể: + +1. **Wrap code gọi trong `#if UNITY_EDITOR`**: +```csharp +#if UNITY_EDITOR + int nCurPanel9 = GetCurPanel1(); +#else + int nCurPanel9 = 1; // Default value +#endif +``` + +2. **Hoặc di chuyển `GetCurPanel1()` ra ngoài `#if UNITY_EDITOR`** nếu nó cần được gọi từ runtime code. + +## Kết Luận + +Analyzer đã được cải thiện và rebuild. Bạn cần: +1. ✅ Analyzer đã được thêm vào .csproj +2. ✅ Analyzer đã được rebuild +3. ⏳ **Reload Visual Studio** để analyzer hoạt động +4. ⏳ Kiểm tra warnings trong Error List + +Sau khi reload Visual Studio, bạn sẽ thấy warning ở dòng 42 của `CdlgQuickBar.cs`. diff --git a/UnityEditorOnlyAnalyzer/QUICK_START.md b/UnityEditorOnlyAnalyzer/QUICK_START.md new file mode 100644 index 0000000000..ef649f017d --- /dev/null +++ b/UnityEditorOnlyAnalyzer/QUICK_START.md @@ -0,0 +1,61 @@ +# Quick Start - Unity Editor Only Analyzer + +## Bước 1: Analyzer đã được build ✅ + +Analyzer đã được build thành công tại: +``` +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.dll +``` + +## Bước 2: Kích hoạt Analyzer + +### Tự động (Khuyến nghị): +1. Mở Unity Editor +2. File `Assets/Editor/AddAnalyzerPostprocessor.cs` sẽ tự động thêm analyzer vào `.csproj` files khi Unity generate chúng +3. Reload project trong Visual Studio/VS Code + +### Thủ công: +Mở file `Assembly-CSharp.csproj` và thêm trước thẻ ``: + +```xml + + + + +``` + +## Bước 3: Kiểm tra + +Tạo file test để kiểm tra: + +```csharp +#if UNITY_EDITOR +public class EditorOnlyClass +{ + public static void EditorMethod() { } +} +#endif + +public class RegularClass +{ + public void Test() + { + EditorOnlyClass.EditorMethod(); // ⚠️ Nên có warning ở đây + } +} +``` + +Bạn sẽ thấy warning trong Visual Studio/VS Code: +``` +UNITY_EDITOR_ONLY_USAGE: Method/Type 'EditorMethod' is only available in UNITY_EDITOR and may cause build errors +``` + +## Lưu ý + +- Analyzer chỉ hoạt động trong IDE (Visual Studio/VS Code), không phải trong Unity Editor +- Cần reload project sau khi thêm analyzer +- Nếu không thấy warnings, kiểm tra Error List trong Visual Studio (View > Error List) + +## Troubleshooting + +Nếu analyzer không hoạt động, xem file `SETUP_UNITY_EDITOR_ANALYZER.md` để biết chi tiết. diff --git a/UnityEditorOnlyAnalyzer/README.md b/UnityEditorOnlyAnalyzer/README.md new file mode 100644 index 0000000000..0f6750e7a5 --- /dev/null +++ b/UnityEditorOnlyAnalyzer/README.md @@ -0,0 +1,88 @@ +# Unity Editor Only Usage Analyzer + +Roslyn Analyzer để phát hiện việc sử dụng code được wrap trong `#if UNITY_EDITOR` từ code không có directive tương ứng, có thể gây lỗi build. + +## Cài đặt + +### Cách 1: Build và thêm vào .csproj (Khuyến nghị) + +1. Build analyzer project: +```bash +cd UnityEditorOnlyAnalyzer +dotnet build -c Release +``` + +2. Thêm analyzer vào Unity project bằng cách chỉnh sửa `.csproj` files: +```xml + + + +``` + +### Cách 2: Sử dụng như NuGet Package + +1. Tạo NuGet package: +```bash +dotnet pack -c Release +``` + +2. Thêm vào `packages.config` hoặc sử dụng PackageReference trong .csproj + +## Cách hoạt động + +Analyzer sẽ cảnh báo khi: +- Một method được định nghĩa trong `#if UNITY_EDITOR` nhưng được gọi từ code không có directive này +- Một class được định nghĩa trong `#if UNITY_EDITOR` nhưng được khởi tạo từ code không có directive này +- Một property/field được định nghĩa trong `#if UNITY_EDITOR` nhưng được truy cập từ code không có directive này + +## Ví dụ + +### ❌ Code sẽ bị cảnh báo: + +```csharp +#if UNITY_EDITOR +public void EditorOnlyMethod() { } +#endif + +public void RegularMethod() +{ + EditorOnlyMethod(); // ⚠️ Cảnh báo: EditorOnlyMethod chỉ có trong UNITY_EDITOR +} +``` + +### ✅ Code đúng: + +```csharp +#if UNITY_EDITOR +public void EditorOnlyMethod() { } +#endif + +#if UNITY_EDITOR +public void RegularMethod() +{ + EditorOnlyMethod(); // ✅ OK: Cả hai đều trong UNITY_EDITOR +} +#endif +``` + +## Diagnostic ID + +- **ID**: `UNITY_EDITOR_ONLY_USAGE` +- **Severity**: Warning +- **Category**: Unity + +## Tùy chỉnh + +Bạn có thể disable warning này trong `.editorconfig`: + +```ini +[*.cs] +dotnet_diagnostic.UNITY_EDITOR_ONLY_USAGE.severity = none +``` + +Hoặc trong code: +```csharp +#pragma warning disable UNITY_EDITOR_ONLY_USAGE +// Your code here +#pragma warning restore UNITY_EDITOR_ONLY_USAGE +``` diff --git a/UnityEditorOnlyAnalyzer/UnityEditorOnlyUsageAnalyzer.cs b/UnityEditorOnlyAnalyzer/UnityEditorOnlyUsageAnalyzer.cs new file mode 100644 index 0000000000..317aec1f32 --- /dev/null +++ b/UnityEditorOnlyAnalyzer/UnityEditorOnlyUsageAnalyzer.cs @@ -0,0 +1,301 @@ +using System; +using System.Collections.Immutable; +using System.Linq; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; + +[DiagnosticAnalyzer(LanguageNames.CSharp)] +public class UnityEditorOnlyUsageAnalyzer : DiagnosticAnalyzer +{ + public const string DiagnosticId = "UNITY_EDITOR_ONLY_USAGE"; + + private static readonly LocalizableString Title = + "Usage of UNITY_EDITOR-only code"; + + private static readonly LocalizableString MessageFormat = + "Method/Type '{0}' is only available in UNITY_EDITOR and may cause build errors"; + + private static readonly LocalizableString Description = + "Warns when code wrapped in #if UNITY_EDITOR is used from code that is not wrapped in the same directive."; + + private const string Category = "Unity"; + + private static readonly DiagnosticDescriptor Rule = new DiagnosticDescriptor( + DiagnosticId, + Title, + MessageFormat, + Category, + DiagnosticSeverity.Error, // Changed from Warning to Error để hiển thị màu đỏ + isEnabledByDefault: true, + description: Description); + + public override ImmutableArray SupportedDiagnostics => + ImmutableArray.Create(Rule); + + public override void Initialize(AnalysisContext context) + { + context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); + context.EnableConcurrentExecution(); + + // Kiểm tra method calls + context.RegisterSyntaxNodeAction(AnalyzeInvocation, SyntaxKind.InvocationExpression); + + // Kiểm tra property/field access + context.RegisterSyntaxNodeAction(AnalyzeMemberAccess, SyntaxKind.SimpleMemberAccessExpression); + + // Kiểm tra identifier (biến đơn giản như m_nCurPanel2) + context.RegisterSyntaxNodeAction(AnalyzeIdentifier, SyntaxKind.IdentifierName); + + // Kiểm tra object creation (new ClassName()) + context.RegisterSyntaxNodeAction(AnalyzeObjectCreation, SyntaxKind.ObjectCreationExpression); + } + + private void AnalyzeInvocation(SyntaxNodeAnalysisContext context) + { + var invocation = (InvocationExpressionSyntax)context.Node; + + if (invocation.Expression is MemberAccessExpressionSyntax memberAccess) + { + CheckMemberAccess(context, memberAccess, invocation); + } + else if (invocation.Expression is IdentifierNameSyntax identifier) + { + CheckIdentifier(context, identifier, invocation); + } + } + + private void AnalyzeMemberAccess(SyntaxNodeAnalysisContext context) + { + var memberAccess = (MemberAccessExpressionSyntax)context.Node; + CheckMemberAccess(context, memberAccess, memberAccess); + } + + private void AnalyzeIdentifier(SyntaxNodeAnalysisContext context) + { + var identifier = (IdentifierNameSyntax)context.Node; + + // Bỏ qua namespace declarations + if (identifier.Parent is QualifiedNameSyntax || + identifier.Parent is UsingDirectiveSyntax || + identifier.Parent is NamespaceDeclarationSyntax || + identifier.Parent is FileScopedNamespaceDeclarationSyntax) + { + return; + } + + // Bỏ qua nếu identifier này là phần của member access (đã xử lý ở AnalyzeMemberAccess) + if (identifier.Parent is MemberAccessExpressionSyntax memberAccess && memberAccess.Name == identifier) + { + return; + } + + // Bỏ qua nếu identifier này là phần của invocation (đã xử lý ở AnalyzeInvocation) + if (identifier.Parent is InvocationExpressionSyntax) + { + return; + } + + // Bỏ qua type names trong declarations + if (identifier.Parent is VariableDeclarationSyntax || + identifier.Parent is TypeSyntax) + { + return; + } + + CheckIdentifier(context, identifier, identifier); + } + + private void AnalyzeObjectCreation(SyntaxNodeAnalysisContext context) + { + var objectCreation = (ObjectCreationExpressionSyntax)context.Node; + + if (objectCreation.Type != null) + { + var symbol = context.SemanticModel.GetSymbolInfo(objectCreation.Type).Symbol; + if (symbol != null && IsEditorOnlySymbol(symbol, context)) + { + if (!IsInEditorOnlyContext(context.Node)) + { + var diagnostic = Diagnostic.Create( + Rule, + objectCreation.Type.GetLocation(), + symbol.Name); + context.ReportDiagnostic(diagnostic); + } + } + } + } + + private void CheckMemberAccess(SyntaxNodeAnalysisContext context, MemberAccessExpressionSyntax memberAccess, SyntaxNode reportNode) + { + var symbolInfo = context.SemanticModel.GetSymbolInfo(memberAccess); + + if (symbolInfo.Symbol == null) + return; + + // Check if the symbol is defined within #if UNITY_EDITOR + if (IsEditorOnlySymbol(symbolInfo.Symbol, context)) + { + // Check if the current usage is NOT within #if UNITY_EDITOR + if (!IsInEditorOnlyContext(memberAccess)) + { + var diagnostic = Diagnostic.Create( + Rule, + reportNode.GetLocation(), + symbolInfo.Symbol.Name); + context.ReportDiagnostic(diagnostic); + } + } + } + + private void CheckIdentifier(SyntaxNodeAnalysisContext context, IdentifierNameSyntax identifier, SyntaxNode reportNode) + { + var symbolInfo = context.SemanticModel.GetSymbolInfo(identifier); + + if (symbolInfo.Symbol == null) + return; + + if (IsEditorOnlySymbol(symbolInfo.Symbol, context)) + { + if (!IsInEditorOnlyContext(identifier)) + { + var diagnostic = Diagnostic.Create( + Rule, + reportNode.GetLocation(), + symbolInfo.Symbol.Name); + context.ReportDiagnostic(diagnostic); + } + } + } + + private bool IsEditorOnlySymbol(ISymbol symbol, SyntaxNodeAnalysisContext context) + { + if (symbol == null) + return false; + + // Get the syntax reference + var syntaxReferences = symbol.DeclaringSyntaxReferences; + if (syntaxReferences.Length == 0) + return false; + + foreach (var syntaxRef in syntaxReferences) + { + var syntax = syntaxRef.GetSyntax(context.CancellationToken); + if (IsInEditorOnlyContext(syntax)) + { + return true; + } + } + + return false; + } + + private bool IsInEditorOnlyContext(SyntaxNode node) + { + if (node == null) + return false; + + var root = node.SyntaxTree.GetRoot(); + var nodeStart = node.SpanStart; + + // Get all trivia in the file + var allTrivia = root.DescendantTrivia(); + + int activeIfDirectiveStart = -1; + bool inEditorBlock = false; + + foreach (var trivia in allTrivia) + { + // Stop checking if we've passed the node + if (trivia.SpanStart > nodeStart) + break; + + if (trivia.IsKind(SyntaxKind.IfDirectiveTrivia)) + { + var directive = trivia.GetStructure() as ConditionalDirectiveTriviaSyntax; + if (directive != null && ContainsUnityEditorCondition(directive)) + { + activeIfDirectiveStart = directive.SpanStart; + inEditorBlock = true; + } + } + else if (trivia.IsKind(SyntaxKind.EndIfDirectiveTrivia)) + { + // Check if this #endif closes the active UNITY_EDITOR block + if (inEditorBlock && activeIfDirectiveStart >= 0) + { + // This #endif closes the UNITY_EDITOR block + // Check if node is before this #endif + if (nodeStart < trivia.SpanStart) + { + // Node is inside the UNITY_EDITOR block + return true; + } + // Node is after this #endif, so not in UNITY_EDITOR block + inEditorBlock = false; + activeIfDirectiveStart = -1; + } + } + else if (trivia.IsKind(SyntaxKind.ElseDirectiveTrivia)) + { + // #else closes the if block, so if we're in UNITY_EDITOR block, it ends here + if (inEditorBlock && activeIfDirectiveStart >= 0) + { + if (nodeStart < trivia.SpanStart) + { + return true; + } + inEditorBlock = false; + activeIfDirectiveStart = -1; + } + } + } + + // If we're still in an editor block and haven't hit an #endif, check if node is after the #if + if (inEditorBlock && activeIfDirectiveStart >= 0) + { + // Check if there's an #endif after the node + foreach (var trivia in allTrivia) + { + if (trivia.SpanStart <= nodeStart) + continue; + + if (trivia.IsKind(SyntaxKind.EndIfDirectiveTrivia)) + { + // Node is between #if UNITY_EDITOR and #endif + return true; + } + else if (trivia.IsKind(SyntaxKind.IfDirectiveTrivia)) + { + // New #if starts, check if it's nested + var directive = trivia.GetStructure() as ConditionalDirectiveTriviaSyntax; + if (directive != null && ContainsUnityEditorCondition(directive)) + { + // Nested UNITY_EDITOR block, continue checking + continue; + } + } + } + + // If no #endif found after node, node is still in the block + return true; + } + + return false; + } + + private bool ContainsUnityEditorCondition(ConditionalDirectiveTriviaSyntax directive) + { + if (directive == null) + return false; + + var condition = directive.Condition?.ToString(); + if (string.IsNullOrEmpty(condition)) + return false; + + // Check for UNITY_EDITOR in the condition (exact match or as part of expression) + return condition.IndexOf("UNITY_EDITOR", StringComparison.OrdinalIgnoreCase) >= 0; + } +} diff --git a/UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.deps.json b/UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.deps.json new file mode 100644 index 0000000000..307a7a357a --- /dev/null +++ b/UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.deps.json @@ -0,0 +1,320 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.0/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.0": {}, + ".NETStandard,Version=v2.0/": { + "UnityEditorOnlyAnalyzer/1.0.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "Microsoft.CodeAnalysis.CSharp": "4.5.0", + "NETStandard.Library": "2.0.3" + }, + "runtime": { + "UnityEditorOnlyAnalyzer.dll": {} + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.4": {}, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "System.Collections.Immutable": "6.0.0", + "System.Memory": "4.5.5", + "System.Reflection.Metadata": "6.0.1", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encoding.CodePages": "6.0.0", + "System.Threading.Tasks.Extensions": "4.5.4" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "4.5.0.0", + "fileVersion": "4.500.23.10905" + } + }, + "resources": { + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Common": "4.5.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "4.5.0.0", + "fileVersion": "4.500.23.10905" + } + }, + "resources": { + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "NETStandard.Library/2.0.3": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + }, + "System.Buffers/4.5.1": { + "runtime": { + "lib/netstandard2.0/System.Buffers.dll": { + "assemblyVersion": "4.0.3.0", + "fileVersion": "4.6.28619.1" + } + } + }, + "System.Collections.Immutable/6.0.0": { + "dependencies": { + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "runtime": { + "lib/netstandard2.0/System.Collections.Immutable.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Memory/4.5.5": { + "dependencies": { + "System.Buffers": "4.5.1", + "System.Numerics.Vectors": "4.4.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "runtime": { + "lib/netstandard2.0/System.Memory.dll": { + "assemblyVersion": "4.0.1.2", + "fileVersion": "4.6.31308.1" + } + } + }, + "System.Numerics.Vectors/4.4.0": { + "runtime": { + "lib/netstandard2.0/System.Numerics.Vectors.dll": { + "assemblyVersion": "4.1.3.0", + "fileVersion": "4.6.25519.3" + } + } + }, + "System.Reflection.Metadata/6.0.1": { + "dependencies": { + "System.Collections.Immutable": "6.0.0" + }, + "runtime": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.322.12309" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Text.Encoding.CodePages/6.0.0": { + "dependencies": { + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "runtime": { + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "runtime": { + "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll": { + "assemblyVersion": "4.2.0.1", + "fileVersion": "4.6.28619.1" + } + } + } + } + }, + "libraries": { + "UnityEditorOnlyAnalyzer/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==", + "path": "microsoft.codeanalysis.analyzers/3.3.4", + "hashPath": "microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lwAbIZNdnY0SUNoDmZHkVUwLO8UyNnyyh1t/4XsbFxi4Ounb3xszIYZaWhyj5ZjyfcwqwmtMbE7fUTVCqQEIdQ==", + "path": "microsoft.codeanalysis.common/4.5.0", + "hashPath": "microsoft.codeanalysis.common.4.5.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cM59oMKAOxvdv76bdmaKPy5hfj+oR+zxikWoueEB7CwTko7mt9sVKZI8Qxlov0C/LuKEG+WQwifepqL3vuTiBQ==", + "path": "microsoft.codeanalysis.csharp/4.5.0", + "hashPath": "microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "path": "netstandard.library/2.0.3", + "hashPath": "netstandard.library.2.0.3.nupkg.sha512" + }, + "System.Buffers/4.5.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==", + "path": "system.buffers/4.5.1", + "hashPath": "system.buffers.4.5.1.nupkg.sha512" + }, + "System.Collections.Immutable/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==", + "path": "system.collections.immutable/6.0.0", + "hashPath": "system.collections.immutable.6.0.0.nupkg.sha512" + }, + "System.Memory/4.5.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", + "path": "system.memory/4.5.5", + "hashPath": "system.memory.4.5.5.nupkg.sha512" + }, + "System.Numerics.Vectors/4.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UiLzLW+Lw6HLed1Hcg+8jSRttrbuXv7DANVj0DkL9g6EnnzbL75EB7EWsw5uRbhxd/4YdG8li5XizGWepmG3PQ==", + "path": "system.numerics.vectors/4.4.0", + "hashPath": "system.numerics.vectors.4.4.0.nupkg.sha512" + }, + "System.Reflection.Metadata/6.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==", + "path": "system.reflection.metadata/6.0.1", + "hashPath": "system.reflection.metadata.6.0.1.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", + "path": "system.runtime.compilerservices.unsafe/6.0.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512" + }, + "System.Text.Encoding.CodePages/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", + "path": "system.text.encoding.codepages/6.0.0", + "hashPath": "system.text.encoding.codepages.6.0.0.nupkg.sha512" + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", + "path": "system.threading.tasks.extensions/4.5.4", + "hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.dll b/UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.dll new file mode 100644 index 0000000000000000000000000000000000000000..99c86ce7645a33af08ad5ca526466db7c6e13852 GIT binary patch literal 9216 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 literal 0 HcmV?d00001 diff --git a/UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.xml b/UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.xml new file mode 100644 index 0000000000..b26cdea69a --- /dev/null +++ b/UnityEditorOnlyAnalyzer/bin/Release/netstandard2.0/UnityEditorOnlyAnalyzer.xml @@ -0,0 +1,8 @@ + + + + UnityEditorOnlyAnalyzer + + + + diff --git a/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs new file mode 100644 index 0000000000..8bf3a42226 --- /dev/null +++ b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] diff --git a/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.AssemblyInfo.cs b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.AssemblyInfo.cs new file mode 100644 index 0000000000..9154f40b53 --- /dev/null +++ b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("UnityEditorOnlyAnalyzer")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+3f57f648cedeea1d6fcdb384ee3b716fb9ec6b38")] +[assembly: System.Reflection.AssemblyProductAttribute("UnityEditorOnlyAnalyzer")] +[assembly: System.Reflection.AssemblyTitleAttribute("UnityEditorOnlyAnalyzer")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.AssemblyInfoInputs.cache b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.AssemblyInfoInputs.cache new file mode 100644 index 0000000000..a79c6d6381 --- /dev/null +++ b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +e6393a12ef7d750e9cde3f8543417fb1572de567f7aa7467f6fa38578092253c diff --git a/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.GeneratedMSBuildEditorConfig.editorconfig b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000000..1ba56f11a4 --- /dev/null +++ b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,16 @@ +is_global = true +build_property.TargetFramework = netstandard2.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = true +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = UnityEditorOnlyAnalyzer +build_property.ProjectDir = E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = +build_property.EnableCodeStyleSeverity = diff --git a/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.assets.cache b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..5735d420d89d03e405eef1e9b2515ee0637d7e3d GIT binary patch literal 16274 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 MG{23;g!p*>530;+J^%m! literal 0 HcmV?d00001 diff --git a/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.csproj.CoreCompileInputs.cache b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000000..b6de4c7e02 --- /dev/null +++ b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +3fc34b92f89c75b4779e8740553e8ef89532076d6c3fabf38ce6b74c9cbc2bc1 diff --git a/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.csproj.FileListAbsolute.txt b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.csproj.FileListAbsolute.txt new file mode 100644 index 0000000000..c4783c042c --- /dev/null +++ b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.csproj.FileListAbsolute.txt @@ -0,0 +1,12 @@ +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\obj\Release\netstandard2.0\UnityEditorOnlyAnalyzer.csproj.AssemblyReference.cache +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\obj\Release\netstandard2.0\UnityEditorOnlyAnalyzer.GeneratedMSBuildEditorConfig.editorconfig +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\obj\Release\netstandard2.0\UnityEditorOnlyAnalyzer.AssemblyInfoInputs.cache +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\obj\Release\netstandard2.0\UnityEditorOnlyAnalyzer.AssemblyInfo.cs +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\obj\Release\netstandard2.0\UnityEditorOnlyAnalyzer.csproj.CoreCompileInputs.cache +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.deps.json +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.dll +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.pdb +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.xml +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\obj\Release\netstandard2.0\UnityEditorOnlyAnalyzer.dll +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\obj\Release\netstandard2.0\UnityEditorOnlyAnalyzer.xml +E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\obj\Release\netstandard2.0\UnityEditorOnlyAnalyzer.pdb diff --git a/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.dll b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.dll new file mode 100644 index 0000000000000000000000000000000000000000..99c86ce7645a33af08ad5ca526466db7c6e13852 GIT binary patch literal 9216 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 literal 0 HcmV?d00001 diff --git a/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.xml b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.xml new file mode 100644 index 0000000000..b26cdea69a --- /dev/null +++ b/UnityEditorOnlyAnalyzer/obj/Release/netstandard2.0/UnityEditorOnlyAnalyzer.xml @@ -0,0 +1,8 @@ + + + + UnityEditorOnlyAnalyzer + + + + diff --git a/UnityEditorOnlyAnalyzer/obj/UnityEditorOnlyAnalyzer.csproj.nuget.dgspec.json b/UnityEditorOnlyAnalyzer/obj/UnityEditorOnlyAnalyzer.csproj.nuget.dgspec.json new file mode 100644 index 0000000000..8c15410b8d --- /dev/null +++ b/UnityEditorOnlyAnalyzer/obj/UnityEditorOnlyAnalyzer.csproj.nuget.dgspec.json @@ -0,0 +1,86 @@ +{ + "format": 1, + "restore": { + "E:\\Projects\\perfect-world-unity\\UnityEditorOnlyAnalyzer\\UnityEditorOnlyAnalyzer.csproj": {} + }, + "projects": { + "E:\\Projects\\perfect-world-unity\\UnityEditorOnlyAnalyzer\\UnityEditorOnlyAnalyzer.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "E:\\Projects\\perfect-world-unity\\UnityEditorOnlyAnalyzer\\UnityEditorOnlyAnalyzer.csproj", + "projectName": "UnityEditorOnlyAnalyzer", + "projectPath": "E:\\Projects\\perfect-world-unity\\UnityEditorOnlyAnalyzer\\UnityEditorOnlyAnalyzer.csproj", + "packagesPath": "C:\\Users\\BrewPC\\.nuget\\packages\\", + "outputPath": "E:\\Projects\\perfect-world-unity\\UnityEditorOnlyAnalyzer\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "E:\\VSShare\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\BrewPC\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "netstandard2.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.0": { + "targetAlias": "netstandard2.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "netstandard2.0": { + "targetAlias": "netstandard2.0", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": { + "suppressParent": "All", + "target": "Package", + "version": "[3.3.4, )" + }, + "Microsoft.CodeAnalysis.CSharp": { + "suppressParent": "All", + "target": "Package", + "version": "[4.5.0, )" + }, + "NETStandard.Library": { + "suppressParent": "All", + "target": "Package", + "version": "[2.0.3, )", + "autoReferenced": true + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.306\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/UnityEditorOnlyAnalyzer/obj/UnityEditorOnlyAnalyzer.csproj.nuget.g.props b/UnityEditorOnlyAnalyzer/obj/UnityEditorOnlyAnalyzer.csproj.nuget.g.props new file mode 100644 index 0000000000..dbc8652ede --- /dev/null +++ b/UnityEditorOnlyAnalyzer/obj/UnityEditorOnlyAnalyzer.csproj.nuget.g.props @@ -0,0 +1,22 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\BrewPC\.nuget\packages\;E:\VSShare\NuGetPackages + PackageReference + 6.14.0 + + + + + + + + + + C:\Users\BrewPC\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.4 + + \ No newline at end of file diff --git a/UnityEditorOnlyAnalyzer/obj/UnityEditorOnlyAnalyzer.csproj.nuget.g.targets b/UnityEditorOnlyAnalyzer/obj/UnityEditorOnlyAnalyzer.csproj.nuget.g.targets new file mode 100644 index 0000000000..022a5dd410 --- /dev/null +++ b/UnityEditorOnlyAnalyzer/obj/UnityEditorOnlyAnalyzer.csproj.nuget.g.targets @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/UnityEditorOnlyAnalyzer/obj/project.assets.json b/UnityEditorOnlyAnalyzer/obj/project.assets.json new file mode 100644 index 0000000000..88cb68c9db --- /dev/null +++ b/UnityEditorOnlyAnalyzer/obj/project.assets.json @@ -0,0 +1,1457 @@ +{ + "version": 3, + "targets": { + ".NETStandard,Version=v2.0": { + "Microsoft.CodeAnalysis.Analyzers/3.3.4": { + "type": "package", + "build": { + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.props": {}, + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.targets": {} + } + }, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.3", + "System.Collections.Immutable": "6.0.0", + "System.Memory": "4.5.5", + "System.Reflection.Metadata": "6.0.1", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encoding.CodePages": "6.0.0", + "System.Threading.Tasks.Extensions": "4.5.4" + }, + "compile": { + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "[4.5.0]" + }, + "compile": { + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + }, + "build": { + "build/netstandard2.0/NETStandard.Library.targets": {} + } + }, + "System.Buffers/4.5.1": { + "type": "package", + "compile": { + "ref/netstandard2.0/System.Buffers.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Buffers.dll": { + "related": ".xml" + } + } + }, + "System.Collections.Immutable/6.0.0": { + "type": "package", + "dependencies": { + "System.Memory": "4.5.4", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "compile": { + "lib/netstandard2.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + } + }, + "System.Memory/4.5.5": { + "type": "package", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Numerics.Vectors": "4.4.0", + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + }, + "compile": { + "lib/netstandard2.0/System.Memory.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Memory.dll": { + "related": ".xml" + } + } + }, + "System.Numerics.Vectors/4.4.0": { + "type": "package", + "compile": { + "ref/netstandard2.0/System.Numerics.Vectors.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Numerics.Vectors.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.Metadata/6.0.1": { + "type": "package", + "dependencies": { + "System.Collections.Immutable": "6.0.0" + }, + "compile": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + } + }, + "System.Text.Encoding.CodePages/6.0.0": { + "type": "package", + "dependencies": { + "System.Memory": "4.5.4", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "compile": { + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + }, + "compile": { + "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } + } + } + } + }, + "libraries": { + "Microsoft.CodeAnalysis.Analyzers/3.3.4": { + "sha512": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==", + "type": "package", + "path": "microsoft.codeanalysis.analyzers/3.3.4", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.txt", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", + "analyzers/dotnet/cs/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", + "analyzers/dotnet/vb/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.props", + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.targets", + "buildTransitive/config/analysislevel_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_all.globalconfig", + "buildTransitive/config/analysislevel_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_default.globalconfig", + "buildTransitive/config/analysislevel_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_none.globalconfig", + "buildTransitive/config/analysislevel_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_all.globalconfig", + "buildTransitive/config/analysislevel_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_default.globalconfig", + "buildTransitive/config/analysislevel_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_none.globalconfig", + "buildTransitive/config/analysislevel_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_all.globalconfig", + "buildTransitive/config/analysislevel_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_default.globalconfig", + "buildTransitive/config/analysislevel_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_none.globalconfig", + "buildTransitive/config/analysislevel_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_recommended_warnaserror.globalconfig", + "documentation/Analyzer Configuration.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.sarif", + "editorconfig/AllRulesDefault/.editorconfig", + "editorconfig/AllRulesDisabled/.editorconfig", + "editorconfig/AllRulesEnabled/.editorconfig", + "editorconfig/CorrectnessRulesDefault/.editorconfig", + "editorconfig/CorrectnessRulesEnabled/.editorconfig", + "editorconfig/DataflowRulesDefault/.editorconfig", + "editorconfig/DataflowRulesEnabled/.editorconfig", + "editorconfig/LibraryRulesDefault/.editorconfig", + "editorconfig/LibraryRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled/.editorconfig", + "editorconfig/PortedFromFxCopRulesDefault/.editorconfig", + "editorconfig/PortedFromFxCopRulesEnabled/.editorconfig", + "microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512", + "microsoft.codeanalysis.analyzers.nuspec", + "rulesets/AllRulesDefault.ruleset", + "rulesets/AllRulesDisabled.ruleset", + "rulesets/AllRulesEnabled.ruleset", + "rulesets/CorrectnessRulesDefault.ruleset", + "rulesets/CorrectnessRulesEnabled.ruleset", + "rulesets/DataflowRulesDefault.ruleset", + "rulesets/DataflowRulesEnabled.ruleset", + "rulesets/LibraryRulesDefault.ruleset", + "rulesets/LibraryRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled.ruleset", + "rulesets/PortedFromFxCopRulesDefault.ruleset", + "rulesets/PortedFromFxCopRulesEnabled.ruleset", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "sha512": "lwAbIZNdnY0SUNoDmZHkVUwLO8UyNnyyh1t/4XsbFxi4Ounb3xszIYZaWhyj5ZjyfcwqwmtMbE7fUTVCqQEIdQ==", + "type": "package", + "path": "microsoft.codeanalysis.common/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "microsoft.codeanalysis.common.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.common.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "sha512": "cM59oMKAOxvdv76bdmaKPy5hfj+oR+zxikWoueEB7CwTko7mt9sVKZI8Qxlov0C/LuKEG+WQwifepqL3vuTiBQ==", + "type": "package", + "path": "microsoft.codeanalysis.csharp/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.nuspec" + ] + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "type": "package", + "path": "microsoft.netcore.platforms/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "microsoft.netcore.platforms.nuspec", + "runtime.json" + ] + }, + "NETStandard.Library/2.0.3": { + "sha512": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "type": "package", + "path": "netstandard.library/2.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "build/netstandard2.0/NETStandard.Library.targets", + "build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll", + "build/netstandard2.0/ref/System.AppContext.dll", + "build/netstandard2.0/ref/System.Collections.Concurrent.dll", + "build/netstandard2.0/ref/System.Collections.NonGeneric.dll", + "build/netstandard2.0/ref/System.Collections.Specialized.dll", + "build/netstandard2.0/ref/System.Collections.dll", + "build/netstandard2.0/ref/System.ComponentModel.Composition.dll", + "build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll", + "build/netstandard2.0/ref/System.ComponentModel.Primitives.dll", + "build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll", + "build/netstandard2.0/ref/System.ComponentModel.dll", + "build/netstandard2.0/ref/System.Console.dll", + "build/netstandard2.0/ref/System.Core.dll", + "build/netstandard2.0/ref/System.Data.Common.dll", + "build/netstandard2.0/ref/System.Data.dll", + "build/netstandard2.0/ref/System.Diagnostics.Contracts.dll", + "build/netstandard2.0/ref/System.Diagnostics.Debug.dll", + "build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll", + "build/netstandard2.0/ref/System.Diagnostics.Process.dll", + "build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll", + "build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll", + "build/netstandard2.0/ref/System.Diagnostics.Tools.dll", + "build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll", + "build/netstandard2.0/ref/System.Diagnostics.Tracing.dll", + "build/netstandard2.0/ref/System.Drawing.Primitives.dll", + "build/netstandard2.0/ref/System.Drawing.dll", + "build/netstandard2.0/ref/System.Dynamic.Runtime.dll", + "build/netstandard2.0/ref/System.Globalization.Calendars.dll", + "build/netstandard2.0/ref/System.Globalization.Extensions.dll", + "build/netstandard2.0/ref/System.Globalization.dll", + "build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll", + "build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll", + "build/netstandard2.0/ref/System.IO.Compression.dll", + "build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll", + "build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll", + "build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll", + "build/netstandard2.0/ref/System.IO.FileSystem.dll", + "build/netstandard2.0/ref/System.IO.IsolatedStorage.dll", + "build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll", + "build/netstandard2.0/ref/System.IO.Pipes.dll", + "build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll", + "build/netstandard2.0/ref/System.IO.dll", + "build/netstandard2.0/ref/System.Linq.Expressions.dll", + "build/netstandard2.0/ref/System.Linq.Parallel.dll", + "build/netstandard2.0/ref/System.Linq.Queryable.dll", + "build/netstandard2.0/ref/System.Linq.dll", + "build/netstandard2.0/ref/System.Net.Http.dll", + "build/netstandard2.0/ref/System.Net.NameResolution.dll", + "build/netstandard2.0/ref/System.Net.NetworkInformation.dll", + "build/netstandard2.0/ref/System.Net.Ping.dll", + "build/netstandard2.0/ref/System.Net.Primitives.dll", + "build/netstandard2.0/ref/System.Net.Requests.dll", + "build/netstandard2.0/ref/System.Net.Security.dll", + "build/netstandard2.0/ref/System.Net.Sockets.dll", + "build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll", + "build/netstandard2.0/ref/System.Net.WebSockets.Client.dll", + "build/netstandard2.0/ref/System.Net.WebSockets.dll", + "build/netstandard2.0/ref/System.Net.dll", + "build/netstandard2.0/ref/System.Numerics.dll", + "build/netstandard2.0/ref/System.ObjectModel.dll", + "build/netstandard2.0/ref/System.Reflection.Extensions.dll", + "build/netstandard2.0/ref/System.Reflection.Primitives.dll", + "build/netstandard2.0/ref/System.Reflection.dll", + "build/netstandard2.0/ref/System.Resources.Reader.dll", + "build/netstandard2.0/ref/System.Resources.ResourceManager.dll", + "build/netstandard2.0/ref/System.Resources.Writer.dll", + "build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll", + "build/netstandard2.0/ref/System.Runtime.Extensions.dll", + "build/netstandard2.0/ref/System.Runtime.Handles.dll", + "build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll", + "build/netstandard2.0/ref/System.Runtime.InteropServices.dll", + "build/netstandard2.0/ref/System.Runtime.Numerics.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll", + "build/netstandard2.0/ref/System.Runtime.Serialization.dll", + "build/netstandard2.0/ref/System.Runtime.dll", + "build/netstandard2.0/ref/System.Security.Claims.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll", + "build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll", + "build/netstandard2.0/ref/System.Security.Principal.dll", + "build/netstandard2.0/ref/System.Security.SecureString.dll", + "build/netstandard2.0/ref/System.ServiceModel.Web.dll", + "build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll", + "build/netstandard2.0/ref/System.Text.Encoding.dll", + "build/netstandard2.0/ref/System.Text.RegularExpressions.dll", + "build/netstandard2.0/ref/System.Threading.Overlapped.dll", + "build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll", + "build/netstandard2.0/ref/System.Threading.Tasks.dll", + "build/netstandard2.0/ref/System.Threading.Thread.dll", + "build/netstandard2.0/ref/System.Threading.ThreadPool.dll", + "build/netstandard2.0/ref/System.Threading.Timer.dll", + "build/netstandard2.0/ref/System.Threading.dll", + "build/netstandard2.0/ref/System.Transactions.dll", + "build/netstandard2.0/ref/System.ValueTuple.dll", + "build/netstandard2.0/ref/System.Web.dll", + "build/netstandard2.0/ref/System.Windows.dll", + "build/netstandard2.0/ref/System.Xml.Linq.dll", + "build/netstandard2.0/ref/System.Xml.ReaderWriter.dll", + "build/netstandard2.0/ref/System.Xml.Serialization.dll", + "build/netstandard2.0/ref/System.Xml.XDocument.dll", + "build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll", + "build/netstandard2.0/ref/System.Xml.XPath.dll", + "build/netstandard2.0/ref/System.Xml.XmlDocument.dll", + "build/netstandard2.0/ref/System.Xml.XmlSerializer.dll", + "build/netstandard2.0/ref/System.Xml.dll", + "build/netstandard2.0/ref/System.dll", + "build/netstandard2.0/ref/mscorlib.dll", + "build/netstandard2.0/ref/netstandard.dll", + "build/netstandard2.0/ref/netstandard.xml", + "lib/netstandard1.0/_._", + "netstandard.library.2.0.3.nupkg.sha512", + "netstandard.library.nuspec" + ] + }, + "System.Buffers/4.5.1": { + "sha512": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==", + "type": "package", + "path": "system.buffers/4.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Buffers.dll", + "lib/net461/System.Buffers.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.1/System.Buffers.dll", + "lib/netstandard1.1/System.Buffers.xml", + "lib/netstandard2.0/System.Buffers.dll", + "lib/netstandard2.0/System.Buffers.xml", + "lib/uap10.0.16299/_._", + "ref/net45/System.Buffers.dll", + "ref/net45/System.Buffers.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.1/System.Buffers.dll", + "ref/netstandard1.1/System.Buffers.xml", + "ref/netstandard2.0/System.Buffers.dll", + "ref/netstandard2.0/System.Buffers.xml", + "ref/uap10.0.16299/_._", + "system.buffers.4.5.1.nupkg.sha512", + "system.buffers.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Collections.Immutable/6.0.0": { + "sha512": "l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==", + "type": "package", + "path": "system.collections.immutable/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Collections.Immutable.dll", + "lib/net461/System.Collections.Immutable.xml", + "lib/net6.0/System.Collections.Immutable.dll", + "lib/net6.0/System.Collections.Immutable.xml", + "lib/netstandard2.0/System.Collections.Immutable.dll", + "lib/netstandard2.0/System.Collections.Immutable.xml", + "system.collections.immutable.6.0.0.nupkg.sha512", + "system.collections.immutable.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Memory/4.5.5": { + "sha512": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", + "type": "package", + "path": "system.memory/4.5.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Memory.dll", + "lib/net461/System.Memory.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.1/System.Memory.dll", + "lib/netstandard1.1/System.Memory.xml", + "lib/netstandard2.0/System.Memory.dll", + "lib/netstandard2.0/System.Memory.xml", + "ref/netcoreapp2.1/_._", + "system.memory.4.5.5.nupkg.sha512", + "system.memory.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Numerics.Vectors/4.4.0": { + "sha512": "UiLzLW+Lw6HLed1Hcg+8jSRttrbuXv7DANVj0DkL9g6EnnzbL75EB7EWsw5uRbhxd/4YdG8li5XizGWepmG3PQ==", + "type": "package", + "path": "system.numerics.vectors/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Numerics.Vectors.dll", + "lib/net46/System.Numerics.Vectors.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.0/System.Numerics.Vectors.dll", + "lib/netstandard1.0/System.Numerics.Vectors.xml", + "lib/netstandard2.0/System.Numerics.Vectors.dll", + "lib/netstandard2.0/System.Numerics.Vectors.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Numerics.Vectors.dll", + "ref/net46/System.Numerics.Vectors.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/System.Numerics.Vectors.dll", + "ref/netstandard1.0/System.Numerics.Vectors.xml", + "ref/netstandard2.0/System.Numerics.Vectors.dll", + "ref/netstandard2.0/System.Numerics.Vectors.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.numerics.vectors.4.4.0.nupkg.sha512", + "system.numerics.vectors.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Reflection.Metadata/6.0.1": { + "sha512": "III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==", + "type": "package", + "path": "system.reflection.metadata/6.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Reflection.Metadata.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Reflection.Metadata.dll", + "lib/net461/System.Reflection.Metadata.xml", + "lib/net6.0/System.Reflection.Metadata.dll", + "lib/net6.0/System.Reflection.Metadata.xml", + "lib/netstandard2.0/System.Reflection.Metadata.dll", + "lib/netstandard2.0/System.Reflection.Metadata.xml", + "system.reflection.metadata.6.0.1.nupkg.sha512", + "system.reflection.metadata.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "sha512": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net461/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Encoding.CodePages/6.0.0": { + "sha512": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", + "type": "package", + "path": "system.text.encoding.codepages/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Text.Encoding.CodePages.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Text.Encoding.CodePages.dll", + "lib/net461/System.Text.Encoding.CodePages.xml", + "lib/net6.0/System.Text.Encoding.CodePages.dll", + "lib/net6.0/System.Text.Encoding.CodePages.xml", + "lib/netcoreapp3.1/System.Text.Encoding.CodePages.dll", + "lib/netcoreapp3.1/System.Text.Encoding.CodePages.xml", + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "lib/netstandard2.0/System.Text.Encoding.CodePages.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "runtimes/win/lib/net461/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/net461/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/netcoreapp3.1/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netcoreapp3.1/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.xml", + "system.text.encoding.codepages.6.0.0.nupkg.sha512", + "system.text.encoding.codepages.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "sha512": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", + "type": "package", + "path": "system.threading.tasks.extensions/4.5.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Threading.Tasks.Extensions.dll", + "lib/net461/System.Threading.Tasks.Extensions.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", + "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard2.0/System.Threading.Tasks.Extensions.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netcoreapp2.1/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.extensions.4.5.4.nupkg.sha512", + "system.threading.tasks.extensions.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + } + }, + "projectFileDependencyGroups": { + ".NETStandard,Version=v2.0": [ + "Microsoft.CodeAnalysis.Analyzers >= 3.3.4", + "Microsoft.CodeAnalysis.CSharp >= 4.5.0", + "NETStandard.Library >= 2.0.3" + ] + }, + "packageFolders": { + "C:\\Users\\BrewPC\\.nuget\\packages\\": {}, + "E:\\VSShare\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "E:\\Projects\\perfect-world-unity\\UnityEditorOnlyAnalyzer\\UnityEditorOnlyAnalyzer.csproj", + "projectName": "UnityEditorOnlyAnalyzer", + "projectPath": "E:\\Projects\\perfect-world-unity\\UnityEditorOnlyAnalyzer\\UnityEditorOnlyAnalyzer.csproj", + "packagesPath": "C:\\Users\\BrewPC\\.nuget\\packages\\", + "outputPath": "E:\\Projects\\perfect-world-unity\\UnityEditorOnlyAnalyzer\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "E:\\VSShare\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\BrewPC\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "netstandard2.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "netstandard2.0": { + "targetAlias": "netstandard2.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "netstandard2.0": { + "targetAlias": "netstandard2.0", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": { + "suppressParent": "All", + "target": "Package", + "version": "[3.3.4, )" + }, + "Microsoft.CodeAnalysis.CSharp": { + "suppressParent": "All", + "target": "Package", + "version": "[4.5.0, )" + }, + "NETStandard.Library": { + "suppressParent": "All", + "target": "Package", + "version": "[2.0.3, )", + "autoReferenced": true + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.306\\RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/UnityEditorOnlyAnalyzer/obj/project.nuget.cache b/UnityEditorOnlyAnalyzer/obj/project.nuget.cache new file mode 100644 index 0000000000..ff4a703828 --- /dev/null +++ b/UnityEditorOnlyAnalyzer/obj/project.nuget.cache @@ -0,0 +1,22 @@ +{ + "version": 2, + "dgSpecHash": "E83ZNZ9Iojc=", + "success": true, + "projectFilePath": "E:\\Projects\\perfect-world-unity\\UnityEditorOnlyAnalyzer\\UnityEditorOnlyAnalyzer.csproj", + "expectedPackageFiles": [ + "C:\\Users\\BrewPC\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.4\\microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512", + "C:\\Users\\BrewPC\\.nuget\\packages\\microsoft.codeanalysis.common\\4.5.0\\microsoft.codeanalysis.common.4.5.0.nupkg.sha512", + "C:\\Users\\BrewPC\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.5.0\\microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512", + "C:\\Users\\BrewPC\\.nuget\\packages\\microsoft.netcore.platforms\\1.1.0\\microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "C:\\Users\\BrewPC\\.nuget\\packages\\netstandard.library\\2.0.3\\netstandard.library.2.0.3.nupkg.sha512", + "C:\\Users\\BrewPC\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512", + "C:\\Users\\BrewPC\\.nuget\\packages\\system.collections.immutable\\6.0.0\\system.collections.immutable.6.0.0.nupkg.sha512", + "C:\\Users\\BrewPC\\.nuget\\packages\\system.memory\\4.5.5\\system.memory.4.5.5.nupkg.sha512", + "C:\\Users\\BrewPC\\.nuget\\packages\\system.numerics.vectors\\4.4.0\\system.numerics.vectors.4.4.0.nupkg.sha512", + "C:\\Users\\BrewPC\\.nuget\\packages\\system.reflection.metadata\\6.0.1\\system.reflection.metadata.6.0.1.nupkg.sha512", + "C:\\Users\\BrewPC\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "C:\\Users\\BrewPC\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512", + "C:\\Users\\BrewPC\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.4\\system.threading.tasks.extensions.4.5.4.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/WHY_STILL_BLUE.md b/WHY_STILL_BLUE.md new file mode 100644 index 0000000000..2e0ae44846 --- /dev/null +++ b/WHY_STILL_BLUE.md @@ -0,0 +1,52 @@ +# Nguyên nhân analyzer vẫn màu xanh + +Tìm ra nguyên nhân: File `.editorconfig` đang override severity về `warning`! + +## Vấn đề + +File `.editorconfig` (dòng 16) có: +```ini +dotnet_diagnostic.UNITY_EDITOR_ONLY_USAGE.severity = warning +``` + +EditorConfig có **priority cao hơn** analyzer code, nên dù analyzer code đã đổi thành `Error`, EditorConfig vẫn override về `warning`. + +## Đã sửa + +Đổi dòng 16 trong `.editorconfig` từ: +```ini +dotnet_diagnostic.UNITY_EDITOR_ONLY_USAGE.severity = warning +``` + +Thành: +```ini +dotnet_diagnostic.UNITY_EDITOR_ONLY_USAGE.severity = error +``` + +## Reload Visual Studio + +1. Đóng Visual Studio hoàn toàn +2. Mở lại: double-click `perfect-world-unity.sln` +3. Visual Studio sẽ đọc `.editorconfig` mới +4. `GetCurPanel1()` sẽ hiển thị màu đỏ + +## Priority Order + +``` +EditorConfig (.editorconfig) + ↓ (highest priority) +Project Settings (.csproj) + ↓ +Analyzer Code (DiagnosticDescriptor) + ↓ (lowest priority) +``` + +EditorConfig luôn thắng! + +## Kết luận + +Đã sửa cả 2 chỗ: +- ✅ Analyzer code: `DiagnosticSeverity.Error` +- ✅ EditorConfig: `severity = error` + +Reload Visual Studio để thấy màu đỏ. diff --git a/claude.md b/claude.md new file mode 100644 index 0000000000..653f000289 --- /dev/null +++ b/claude.md @@ -0,0 +1,79 @@ +# Tóm tắt Dự án (Project Context) +- Mục tiêu: Chuyển đổi dự án Perfect World từ bản gốc PC (`e:\Projects\perfect-world-source`) sang phiên bản Mobile sử dụng Unity (`e:\Projects\perfect-world-unity`). +- Ngôn ngữ & Nền tảng đích: C#, Unity Engine. + +# Nguyên Tắc Hoạt Động Của AI (Core Rules) + +## 1. BẮT BUỘC LÀM RÕ YÊU CẦU (Clarification First Principle) +- TUYỆT ĐỐI KHÔNG tự ý suy đoán và bắt đầu thay đổi code (hoặc thực hiện bất kỳ workflow nào) khi yêu cầu của người dùng còn mơ hồ, thiếu chi tiết hoặc có thể hiểu theo nhiều nghĩa. +- NGUYÊN TẮC CỐT LÕI: "Liên tục hỏi và xác nhận cho đến khi chắc chắn 100% mới bắt đầu thực thi". + +## 2. Quy trình 5 bước tiếp nhận và xử lý yêu cầu: +- **Bước 1 - Phân tích:** Tiếp nhận yêu cầu. Đối chiếu với bối cảnh chuyển đổi từ PC sang Mobile. +- **Bước 2 - Tìm điểm mù:** Tự hỏi bản thân xem có phần nào trong yêu cầu chưa đủ thông tin để viết code lập tức không (vd: thiếu file tham chiếu, logic mobile khác pc chỗ nào, biến nào chịu trách nhiệm lưu trữ trạng thái...). +- **Bước 3 - Đặt câu hỏi:** Đưa ra các câu hỏi ngắn gọn, liệt kê theo gạch đầu dòng để người dùng giải đáp. (VD: "Ý bạn là nút này trên mobile chạm vào sẽ hiện ra mảng 15 skill hay sao?") +- **Bước 4 - Chốt phương án:** Sau khi người dùng đã giải đáp xong mọi thắc mắc, tóm tắt lại phương án giải quyết (Kế hoạch thực hiện) và chờ người dùng nói "OK/Đồng ý". +- **Bước 5 - Thực thi:** Chỉ tiến hành chạy công cụ sửa đổi code hoặc tạo file mới khi bước 4 đã hoàn tất. + +## 3. Lưu ý đặc thù về chuyển đổi PC -> Mobile +- Bất cứ khi nào làm việc với UI hoặc Input, luôn nhớ Mobile dùng Touch/Drag thay vì Mouse Click/Hover. +- Nếu gặp logic không rõ ràng trong `perfect-world-unity`, hãy yêu cầu người dùng trỏ tới file tương ứng ở `perfect-world-source` để tham khảo cách hoạt động gốc. +- **Quy tắc đặt tên khi convert:** Ưu tiên không thay đổi tên biến và hàm nếu có thể, làm giống bên C++ nhất có thể để dễ dàng đối chiếu và debug. + +## 4. Workflow Init Dự Án (Project Initialization) +- **Khi nào:** Khi người dùng yêu cầu init dự án hoặc khi bắt đầu làm việc với dự án mới. +- **Mục đích:** Thu thập và ghi lại thông tin tổng quan về dự án vào file `claude.md` để làm context cho các phiên làm việc sau. +- **Quy trình thực hiện:** + 1. **Quét cấu trúc thư mục:** Sử dụng `list_dir` để khám phá cấu trúc thư mục chính của dự án (Assets, Scripts, Resources, v.v.). + 2. **Xác định module chính:** Tìm và liệt kê các module/tính năng chính của dự án (Skill System, Network, UI, Movement, v.v.). + 3. **Phân tích file quan trọng:** Đọc các file quan trọng như README, config files, entry points để hiểu kiến trúc tổng thể. + 4. **Xác định pattern/convention:** Phân tích naming convention, coding style, design patterns được sử dụng trong dự án. + 5. **Ghi vào claude.md:** Cập nhật file `claude.md` với các thông tin: + - Cấu trúc thư mục chính + - Danh sách module/tính năng quan trọng + - File entry points và file quan trọng + - Kiến trúc hệ thống (nếu có) + - Pattern và convention được sử dụng + - Thông tin về dependencies và build system +- **Lưu ý:** Không cần đọc toàn bộ code, chỉ tập trung vào cấu trúc tổng thể và các file quan trọng để có cái nhìn tổng quan. + +## 5. Chế Độ Ghi Nhớ (Memory Mode) +- **Kích hoạt:** Khi người dùng bắt đầu câu lệnh bằng ký tự `#` (ví dụ: `# Rule mới: ...`, `# Ghi nhớ: ...`, `# Lưu ý: ...`) hoặc lệnh `/memory`. +- **Hành động bắt buộc:** + - AI phải NGAY LẬP TỨC nhận diện đây là Memory Mode. + - Phân tích và trích xuất thông tin cần ghi nhớ từ câu lệnh của người dùng. + - Tự động cập nhật nội dung đó vào file `claude.md` ở section phù hợp (hoặc tạo section mới nếu cần). + - Không cần hỏi lại người dùng, chỉ cần ghi nhớ và cập nhật. +- **Sau khi ghi:** Báo cáo ngắn gọn cho người dùng là đã cập nhật luật/ghi nhớ thành công vào `claude.md`. +- **Mục đích:** Tích lũy kiến thức và quy tắc từ các phiên làm việc để sử dụng cho các lần trò chuyện hiện tại và sau này. + +## 6. Chiến Lược Hiểu Codebase (Codebase Exploration) +- **Giới hạn thực tế:** Dự án MMO (C++ & Unity) có quy mô khổng lồ (hàng ngàn file). Trí tuệ nhân tạo không thể "đọc" toàn bộ source code cùng một lúc do giới hạn bộ nhớ khả dụng trong một phiên hội thoại (context window). +- **Phương pháp "Cuốn chiếu" (On-demand Analysis):** + - **Truy xuất mục tiêu:** Khi bắt tay vào làm một *tính năng cụ thể* (VD: Skill, QuickBar, Di chuyển, Network), AI sẽ dùng công cụ quét (grep/search) để đọc chính xác các file liên quan ở bản C++ gốc và đối chiếu với bản C#. + - **Tích lũy kiến thức:** Xử lý xong phần nào, AI sẽ đúc kết luồng logic của phần đó và ghi chú lại vào hệ thống Knowledge hoặc file `claude.md` để ghi nhớ vĩnh viễn. +- **Cấu trúc Mặc định:** + - **Bản gốc (C++)**: Nằm tại `~\CElement`. Logic chính của game client nằm trong `CElementClient`; Hệ thống UI (như bảng skill, túi đồ) nằm ở `AUInterface2` / `CElementClient`; Logic về hiệu ứng/đồ họa ở `GfxCommon`. + - **Bản Unity (C#)**: Mọi sự chỉnh sửa, code logic chuyển đổi đều được tiến hành và lưu ở `~\perfect-world-unity\Assets`. + +## 7. Phát Hiện Lỗi Build Tiềm Ẩn (Build Error Detection) +- **Khi nào:** Khi code hoặc scan code trong quá trình thực thi yêu cầu của người dùng. +- **Mục đích:** Tự động phát hiện và cảnh báo các lỗi build tiềm ẩn trước khi chúng gây ra vấn đề trong quá trình build. +- **Các loại lỗi cần phát hiện:** + 1. **Conditional Compilation Mismatch:** + - Phát hiện khi một method/class được định nghĩa trong `#if UNITY_EDITOR` (hoặc các directive khác) nhưng được gọi từ code không có cùng directive. + - Ví dụ: + ```csharp + #if UNITY_EDITOR + public void MethodA(){} + #endif + public void MethodB(){ MethodA(); } // ❌ Lỗi: MethodA không tồn tại khi build không phải Editor + ``` + - Giải pháp: Đảm bảo code gọi method cũng nằm trong cùng directive, hoặc sử dụng `#if UNITY_EDITOR` cho cả MethodB, hoặc tách logic để tránh dependency. + 2. **Missing References:** Kiểm tra các reference đến class/method có thể không tồn tại trong một số build configuration. + 3. **Platform-Specific Code:** Phát hiện code chỉ hoạt động trên một platform cụ thể nhưng được gọi từ code chung. +- **Hành động khi phát hiện:** + - Cảnh báo người dùng ngay lập tức về lỗi tiềm ẩn. + - Đề xuất giải pháp khắc phục cụ thể. + - Không tự động sửa mà chờ xác nhận từ người dùng (theo quy trình 5 bước). +- **Lưu ý:** Luôn kiểm tra các directive như `#if UNITY_EDITOR`, `#if UNITY_STANDALONE`, `#if UNITY_ANDROID`, `#if UNITY_IOS`, v.v. khi scan code.