SuperAPI AI 工具集

dotnet-csharp-code-smells

通用与其它

查看项目

更新于 10-15 23:40

技能介绍

用途:在规划、实现和评审等所有工作流模式中,主动检测 C# 代码坏味与反模式,指出问题、说明危害并给出正确修复方式,同时引用相关 CA 规则或交叉引用。

主要能力与覆盖范围:

  1. 资源管理(IDisposable 误用):可释放局部变量缺少 using、IDisposable 字段未释放、Dispose 模式错误、一次性对象跨方法存字段导致所有权不清、对非自有资源使用 using。对应 CA2000、CA2213、CA1816。
  2. 警告抑制取巧:用 null 调用事件抑制 CS0067、用哑变量赋值抑制 CS0219、无恢复的全局 #pragma、无理由的 SuppressMessage。
  3. LINQ 反模式:链中过早 ToList、IEnumerable 多次枚举、EF Core 客户端求值、用 Count() > 0 代替 Any()、嵌套 foreach 代替 Join、Where().First() 代替 First(predicate)。对应 CA1851、CA1827、CA1826。
  4. 事件处理泄漏:不取消订阅、构造函数中触发事件、async void 事件处理器异常不可观测、不检查 null、静态事件未清理。对应 CA2214。
  5. 设计坏味:上帝类(>500 行)、长方法(>30 行)、长参数列表(>5 个)、特性依恋、基本类型偏执、深层嵌套(>3 层)。
  6. 异常处理缺口:空 catch、捕获基类 Exception、记录后吞掉、finally 中抛出、throw ex 重置堆栈、不保留内部异常。对应 CA1031、CA2200。

使用方式:该技能在工作流中自动触发;可通过项目配置 <AnalysisLevel>latest-all</AnalysisLevel> 启用相关分析器规则。

交叉引用:异步陷阱见 dotnet-csharp-async-patterns,命名与风格见 dotnet-csharp-coding-standards,DI 生命周期误用见 dotnet-csharp-dependency-injection,NRT 注解错误见 dotnet-csharp-nullable-reference-types。

限制:不覆盖 LLM 特有问题(NuGet 包错误、项目结构错误、MSBuild 错误),这些由 dotnet-agent-gotchas 负责;仅覆盖任何人(人或 AI)都应避免的通用 .NET 代码坏味。代码示例细节见其 details.md。具体平台支持、收费与价格信息暂未提供。