GitHub CodeQL代码扫描未检测TODO注释及死代码问题排查
GitHub CodeQL 未检测TODO注释与死代码的问题解决
一、TODO注释未被检测的原因及解决
CodeQL默认的security-extended和security-and-quality查询包核心聚焦安全漏洞与关键质量问题,不包含TODO注释这类代码管理类规则。要检测TODO注释,需添加对应的查询集:
- 修改
.github/workflows/codeql.yml中的queries配置,加入code-style查询包:queries: - security-extended - security-and-quality - code-style # 包含TODO注释、代码风格类检测规则 - 重新运行CodeQL扫描Workflow,即可识别代码中的
// TODO注释。
二、死代码未被检测的原因及解决
核心原因
CodeQL的死代码检测依赖静态数据流与控制流分析,存在场景限制:
- ASP.NET控制器方法特殊处理:CarsController.cs中的公共方法,CodeQL会默认认为可能被ASP.NET路由系统动态调用,不会标记为死代码。
- 查询包覆盖范围:
security-and-quality中的死代码查询仅针对明确不可达的分支、无任何调用的私有方法(无反射/动态调用)等场景。
解决方法
- 若死代码是私有方法且无任何调用:在codeql.yml中单独引入死代码相关查询:
queries: - security-extended - security-and-quality - github/codeql/csharp-queries/src/DeadCode/UnusedMethod.ql - 若死代码是控制器公共方法:需手动确认是否真的无路由映射,CodeQL无法自动识别未配置路由的控制器方法为死代码,这类场景建议结合IDE(如Visual Studio)的死代码检测功能补充排查。
- 检查codeql.yml中的
paths/paths-ignore配置,确保CarsController.cs未被排除在分析范围外。
内容的提问来源于stack exchange,提问作者EnigmaticJohn
相关产品推荐
相关产品推荐

