Azure DevOps中GitHub Advanced Security单项目扫描配置问题
解决Azure DevOps单仓中GitHub Advanced Security仅扫描指定文件夹的问题
问题分析
你的配置错误在于错误限制了sourcesfolder的范围,并误用了codeqlpathstoinclude的路径逻辑:
- 当你将
sourcesfolder设为$(System.DefaultWorkingDirectory)/apps/backend/green-app时,CodeQL的扫描根目录被限定在后端green-app文件夹内,此时codeqlpathstoinclude的../frontend/green-app虽然路径上指向了前端green-app,但CodeQL会优先基于当前扫描根目录解析路径,且存在跨目录扫描的限制,导致无法正确识别前端的JS/TS文件。 - 使用通配符
apps/*/green-app/**/*时,由于sourcesfolder已设为后端green-app,该通配符会被解析为apps/backend/green-app/apps/*/green-app/**/*,显然不存在对应路径,因此触发“未找到源文件”错误。
正确配置方案
保持sourcesfolder默认(即仓库根目录$(Build.SourcesDirectory)),直接通过codeqlpathstoinclude指定需要扫描的两个green-app文件夹,路径相对于仓库根目录:
- task: AdvancedSecurity-Codeql-Init@1 condition: and(succeededOrFailed(), ${{parameters.runGithubAdvancedSecurity}}) displayName: 'Github Advanced Security: Initialize 🛡' inputs: languages: 'csharp,javascript' codeqlpathstoinclude: 'apps/frontend/green-app,apps/backend/green-app'
配置说明
- 不设置
sourcesfolder:默认使用仓库根目录作为扫描起点,确保能覆盖所有需要的子目录。 codeqlpathstoinclude用逗号分隔路径:明确指定前端和后端的green-app文件夹,CodeQL会仅扫描这两个目录下对应语言(C#和JavaScript)的文件。- 若偏好通配符写法,可替换为:
codeqlpathstoinclude: 'apps/*/green-app/**',该通配符会匹配apps下所有子目录中的green-app文件夹及其所有子文件/目录。
验证效果
配置完成后,CodeQL将仅扫描apps/frontend/green-app(JS/TS文件)和apps/backend/green-app(C#文件),不会触及red-app或其他无关目录,解决之前的报错问题。
内容的提问来源于stack exchange,提问作者Enrico
相关产品推荐
相关产品推荐

