# 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`.