Azure DevOps自定义CodeQL JavaScript查询报错:No queries defined for javascript
解决Azure DevOps CodeQL自定义查询报错「No queries defined for javascript」
核心问题排查与修复方案
1. 文件名拼写不一致(最可能的原因)
你的查询文件实际是todo.ql,但customconfig.yaml中queries节点引用的路径是./.azuredevops/customcodeql/todos.ql——多了一个字母s。即使你提到修正路径后没有文件未找到错误,仍需严格核对文件名、路径的拼写和大小写:
- Linux/macOS环境的流水线会区分大小写,Windows环境不区分,但为了兼容所有环境,必须保证完全一致。
- 建议直接复制粘贴文件名到配置文件中,避免手动输入错误。
2. 查询元数据与配置结构检查
- 查询元数据:你的
todo.ql元数据格式是正确的,@id、@kind等字段符合要求,无需调整。如果问题仍存在,可以尝试简化@id为js/todocomment,减少层级可能带来的识别问题。 - 配置文件结构:
- 确保
queries下的uses路径是相对于仓库根目录的正确路径,也可以使用绝对路径$(build.sourcesDirectory)/.azuredevops/customcodeql/todo.ql来避免相对路径的歧义。 - 暂时移除
query-filters配置进行测试:虽然你的查询@kind是problem且配置中包含该类型,但过滤规则可能存在隐性冲突,移除后如果查询能正常运行,再逐步调整过滤规则。
- 确保
3. 流水线任务配置验证
- 确认
AdvancedSecurity-Codeql-Init@1任务的languages参数是javascript(不能简写为js),语言名称必须严格匹配CodeQL支持的语言标识。 - 无需额外添加
additional-features参数,默认已支持自定义查询,但如果是较旧版本的任务,可以尝试添加该参数并设置为custom-queries。
修正后的配置示例
# customconfig.yaml 修正版 name: "Run custom queries" disable-default-queries: true queries: - name: TODO_comments uses: ./.azuredevops/customcodeql/todo.ql # 修正文件名拼写错误 paths: - src paths-ignore: - '**/node_modules' - '**/*.test.js' # 先注释过滤规则测试,确认查询正常后再启用 # query-filters: # - include: # kind: problem
内容的提问来源于stack exchange,提问作者Patrik Lindström
相关产品推荐
相关产品推荐

