Files
test/UnityEditorOnlyAnalyzer/README.md
T
2026-03-13 12:34:01 +07:00

89 lines
2.1 KiB
Markdown

# 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
<ItemGroup>
<Analyzer Include="$(SolutionDir)UnityEditorOnlyAnalyzer\bin\Release\netstandard2.0\UnityEditorOnlyAnalyzer.dll" />
</ItemGroup>
```
### 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
```