Files
test/Documentation/TEST_ANALYZER.md
T
2026-03-13 16:03:47 +07:00

126 lines
3.9 KiB
Markdown

# 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
<Analyzer Include="E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.dll" />
```
### 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`.