资讯动态

CodeQL C 数据库库 0.0.11 版变更解读:移除九个遗留环境变量与测试递归提取行为

发布时间:2026/10/9 2:12:29 来源:尧图企业网站定制
静态分析SAST应用安全漏洞扫描代码质量【免费下载链接】codeqlCodeQL: the libraries and queries that power security researchers around the world, as well as code scanning in GitHub Advanced Security项目地址https://gitcode.com/gh_mirrors/co/codeql点击查看免费下载本文基于 CodeQL 仓库中 C# QL 库的版本变更日志 csharp/ql/lib/change-notes/released/0.0.11.md完整解读 0.0.11 版本引入的两项破坏性变更C# 提取器对九个遗留环境变量的支持被彻底移除以及codeql test run开始从子目录递归提取源代码。读完后你可以明确升级该版本后需要修改哪些提取器调用脚本与环境变量并能预判既有测试套件为何会因嵌套目录结构而失败。版本定位一次纯粹的“清理型”发布csharp/ql/lib下的 C# 数据库库采用按版本号命名的变更日志文件来记录每个发布版本的差异0.0.11 的变更日志位于 csharp/ql/lib/change-notes/released/0.0.11.md其内容同时被收录进汇总的 CHANGELOG.md。该版本没有任何新功能或分析改进全部篇幅都是 Breaking Changes破坏性变更共两条C# 提取器不再支持一组遗留legacy环境变量codeql test run现在会从子文件夹递归提取源代码。这两条变更的共同主题是把提取器从早期 Semmle/ODASA 时代的命名约定迁移到统一的CODEQL_*命名规范之下并让测试框架的源文件收集范围与真实构建行为保持一致。破坏性变更一九个遗留环境变量被移除变更日志原文列出了不再受支持的九个环境变量此处完整保留原清单ODASA_BUILD_ERROR_DIR ODASA_CSHARP_LAYOUT ODASA_SNAPSHOT SEMMLE_DIST SEMMLE_EXTRACTOR_OPTIONS SEMMLE_PLATFORM_TOOLS SEMMLE_PRESERVE_SYMLINKS SOURCE_ARCHIVE TRAP_FOLDER这些变量分别带有ODASA_、SEMMLE_前缀或是无命名空间前缀的裸名属于提取器早期版本的接口。自 0.0.11 起提取器读取它们将不再产生任何效果——如果你在 CI 脚本、Docker 镜像或自建构建工具中仍然导出这些变量升级后提取行为会静默改变且不会有任何告警提示。当前的环境变量命名规范从源码结构看现版本的环境变量已经统一收敛到CODEQL_前缀之下并且按“平台级 语言级”两层组织。C# autobuilder 共享库中的 EnvVars.cs 给出了当前的权威清单public const string Platform CODEQL_PLATFORM; public static string Root(Language language) $CODEQL_EXTRACTOR_{language.UpperCaseName}_ROOT; public static string TrapDir(Language language) $CODEQL_EXTRACTOR_{language.UpperCaseName}_TRAP_DIR; public static string SourceArchiveDir(Language language) $CODEQL_EXTRACTOR_{language.UpperCaseName}_SOURCE_ARCHIVE_DIR; public static string DiagnosticDir(Language language) $CODEQL_EXTRACTOR_{language.UpperCaseName}_DIAGNOSTIC_DIR;对 C# 而言语言级变量的具体取值即CODEQL_EXTRACTOR_CSHARP_ROOT、CODEQL_EXTRACTOR_CSHARP_TRAP_DIR、CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR、CODEQL_EXTRACTOR_CSHARP_DIAGNOSTIC_DIR。提取器本体同样印证了这一约定。PathTransformer.cs 中生成 TRAP 文件路径与创建 TRAP 写入器时直接读取的是Environment.GetEnvironmentVariable(CODEQL_EXTRACTOR_CSHARP_TRAP_DIR) Environment.GetEnvironmentVariable(CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR)旧变量到新变量的对应关系对照上表与源码中的实际取值可以推断出移除清单与现行变量之间的大致迁移对应关系供升级时逐项替换参考被移除的遗留变量可以推断的现行替代说明TRAP_FOLDERCODEQL_EXTRACTOR_CSHARP_TRAP_DIR提取结果TRAP 文件输出目录两者语义直接对应SOURCE_ARCHIVECODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR源文件归档目录两者语义直接对应SEMMLE_PLATFORM_TOOLSCODEQL_PLATFORM平台工具目录的定位方式现由平台级变量表达SEMMLE_DISTCODEQL_PLATFORM或平台自带的运行时目录早期分布目录概念现由平台环境统一管理SEMMLE_EXTRACTOR_OPTIONS提取器命令行参数提取选项现通过命令行显式传入SEMMLE_PRESERVE_SYMLINKSCODEQL_PATH_TRANSFORMER等路径处理机制符号链接/路径行为的控制方式已重构ODASA_BUILD_ERROR_DIR、ODASA_CSHARP_LAYOUT、ODASA_SNAPSHOT无直接替代属于更早期的构建系统内部约定已由诊断目录CODEQL_EXTRACTOR_CSHARP_DIAGNOSTIC_DIR等新机制取代其中 TRAP 目录、源归档目录两组对应关系有源码取值直接佐证其余几项的映射是从源码结构推断的若你的流水线中有对应依赖建议以当前仓库中 Semmle.Util 与 Extractor 的实际读取点为准逐一核实。破坏性变更二codeql test run递归提取子文件夹变更日志第二条原文为codeql test runnow extracts source code recursively from sub folders. This may break existing tests that have other tests in nested sub folders, as those will now get the nested test code included.含义是codeql test run在为某个测试建立数据库时源文件收集范围从“仅测试根目录”扩大为“递归包含所有子文件夹”。由此带来的破坏性在于——如果测试目录中嵌套了另一个测试的文件夹外层测试在提取时会把内层测试的源代码一并纳入数据库。这会导致原本不会命中的警报出现在外层测试的.expected文件中测试结果与期望不符而失败数据库规模增大测试运行时间变长。C# 语言的测试目录 csharp/ql/test 采用了library-tests、query-tests、shared、resources等并列子目录的组织方式。升级后若某类测试把自己的测试用例文件平铺在根目录之下、且子目录中存放了其他用途的 C# 代码就应检查该测试在递归提取下是否仍然成立必要时应重新整理目录层级或更新对应的.expected期望文件。升级检查清单结合上述两条变更升级 C# 数据库库到 0.0.11 及以上版本时建议按以下顺序自查全局搜索构建脚本、CI 配置与 Docker 文件中是否仍导出ODASA_、SEMMLE_前缀变量及裸名TRAP_FOLDER、SOURCE_ARCHIVE将 TRAP 输出与源归档路径统一替换为CODEQL_EXTRACTOR_CSHARP_TRAP_DIR、CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR检查csharp/ql/test下各测试的目录结构确认嵌套子目录不会把“别人的测试代码”提取进当前测试的数据库回归运行受影响的测试按递归提取后的真实结果修订.expected期望文件。延伸阅读变更日志条目csharp/ql/lib/change-notes/released/0.0.11.md汇总变更日志csharp/ql/lib/CHANGELOG.md现行环境变量定义csharp/autobuilder/Semmle.Autobuild.Shared/EnvVars.cs路径变换与 TRAP 目录读取实现csharp/extractor/Semmle.Extraction.CSharp/Extractor/PathTransformer.csC# 测试目录csharp/ql/test赞分享静态分析SAST应用安全漏洞扫描代码质量【免费下载链接】codeqlCodeQL: the libraries and queries that power security researchers around the world, as well as code scanning in GitHub Advanced Security项目地址https://gitcode.com/gh_mirrors/co/codeql点击查看免费下载相关推荐CodeQL C/C 查询包 0.0.11 版本解析新查询、破坏性变更与精度提升CodeQL C/C 查询包 0.0.11 版本解析新查询、破坏性变更与精度提升 本指南以 CodeQL 仓库中 cpp/ql/src/change no静态分析SAST应用安全漏洞扫描代码质量CodeQL C/C 查询库 0.5.5 变更解读*Configuration 数据流配置弃用与 *Flow 模块迁移指南CodeQL C/C 查询库 0.5.5 变更解读 Configuration 数据流配置弃用与 Flow 模块迁移指南 导读 本文围绕 CodeQL 仓静态分析SAST应用安全漏洞扫描代码质量CodeQL C 库 3.0.0 变更指南新数据流 API 迁移与 NonThrowingFunction 弃用CodeQL C 库 3.0.0 变更指南新数据流 API 迁移与 NonThrowingFunction 弃用 导读 本文基于 cpp/ql/lib/c静态分析SAST应用安全漏洞扫描代码质量上一篇如何零基础快速搭建AI智能交易系统5分钟实战指南下一篇ho Chris Titus Tech Winaoilyo Windows系统优化管理的ao命性工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑