126 lines
3.9 KiB
Markdown
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`.
|