这个项目包含为 DailyRoutines 设计的代码规范分析器,用于确保代码风格一致性。
DailyRoutines.CodeAnalysis/
├── Common/ # 通用基础设施
│ ├── BaseAnalyzer.cs # 分析器基类
│ ├── BaseCodeFixProvider.cs # 代码修复提供者基类
│ ├── DiagnosticCategories.cs # 诊断类别常量
│ ├── DiagnosticDescriptorFactory.cs # 诊断描述符工厂
│ └── DiagnosticRules.cs # 所有规则的描述符集合
├── Rules/ # 规则实现
│ ├── Naming/ # 命名规则相关
│ ├── Usage/ # 用法规则相关
│ ├── Design/ # 设计规则相关
│ └── Performance/ # 性能规则相关
└── Templates/ # 规则模板
├── TemplateAnalyzer.cs # 分析器模板
└── TemplateCodeFixProvider.cs # 代码修复提供者模板
| 规则 ID | 类别 | 描述 | 严重性 |
|---|---|---|---|
| DR0001 | 用法 | 使用 nint 代替 IntPtr |
警告 |
| DR0002 | 命名 | 不允许命名以下划线开头 | 警告 |
| DR0008 | 设计 | 继承自 ManagerConfiguration 或 ModuleConfiguration 的类中不允许使用 readonly 修饰符 |
警告 |
| DR0009 | 命名 | 英文缩写大小写必须保持一致 | 警告 |
要添加新的规则,请按照以下步骤操作:
- 在
Common/DiagnosticRules.cs中添加新的规则描述符 - 选择适当的规则类别文件夹(或创建新文件夹)
- 复制
Templates目录下的模板文件,根据你的规则进行修改 - 编译并测试新规则
- 复制
Templates/TemplateAnalyzer.cs到适当的类别文件夹中,例如Rules/Performance/AvoidUnnecessaryAllocationAnalyzer.cs - 修改命名空间、类名和规则实现
- 在
Common/DiagnosticRules.cs中添加规则描述符:
/// <summary>
/// 诊断规则:避免不必要的内存分配
/// </summary>
public static readonly DiagnosticDescriptor AvoidUnnecessaryAllocation = DiagnosticDescriptorFactory.Create(
id: "0003",
title: "避免不必要的内存分配",
messageFormat: "这段代码可能导致不必要的内存分配",
category: DiagnosticCategories.Performance,
description: "避免在性能敏感的代码路径中进行不必要的内存分配。"
);- 实现新的分析器:
[DiagnosticAnalyzer(LanguageNames.CSharp)]
public class AvoidUnnecessaryAllocationAnalyzer : BaseAnalyzer
{
public AvoidUnnecessaryAllocationAnalyzer()
: base(DiagnosticRules.AvoidUnnecessaryAllocation)
{
}
protected override void RegisterAnalyzers(AnalysisContext context)
{
// 实现分析逻辑...
}
}- 如果需要,创建对应的代码修复提供程序
- 分析器类命名格式:
<描述性名称>Analyzer - 代码修复提供者命名格式:
<与分析器相同的描述性名称>CodeFixProvider - 规则ID格式:
DR<四位数字>(例如DR0001)
# 构建项目
dotnet build
# 生成NuGet包
dotnet pack -c Release本项目采用MIT许可证。有关详细信息,请参阅 LICENSE 文件。