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

5.8 KiB

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:

<Analyzer Include="E:\Projects\perfect-world-unity\UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.dll" />

🔄 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 <ItemGroup> 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.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:

#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:

    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 objbin 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.