如果我在Visual Studio 2022中运行代码分析(在C++项目上),我会得到每个代码文件的XML和SARIF文件。
否,我尝试使用MSBuild 2022运行代码分析:MSBuild.exe solution.sln -p:Configuration=Release /p:RunCodeAnalysis=true
但是通过这个调用,我只得到了代码分析XML文件,而没有SARIF文件。
知道如何强制MSBuild创建SARIF文件吗?
如果我在Visual Studio 2022中运行代码分析(在C++项目上),我会得到每个代码文件的XML和SARIF文件。
否,我尝试使用MSBuild 2022运行代码分析:MSBuild.exe solution.sln -p:Configuration=Release /p:RunCodeAnalysis=true
但是通过这个调用,我只得到了代码分析XML文件,而没有SARIF文件。
知道如何强制MSBuild创建SARIF文件吗?
2条答案
按热度按时间xhv8bpkk1#
尝试使用以下命令行:
cl.exe <file/project path> /analyze:autolog:ext .nativecodeanalysis.sarif
或者
cl.exe <file/project path> /analyze:autolog:ext .sarif
虽然MSBuild.exe会叫用cl.exe进行编译,但建立.sarif档似乎只能直接使用cl.exe及其命令。
以下是相关文档:分析日志选项
/analyze:自动日志:扩展名
覆盖分析日志文件的默认扩展名,并使用扩展名。如果使用.sarif扩展名,则日志文件将使用SARIF格式,而不是默认的XML格式。
yrdbyhpb2#
https://docs.microsoft.com/en-us/answers/questions/512275/what-to-do-with-static-code-analysis-result-xml-fi.html描述了一种解决方案:
将
Directory.build.props
文件添加到Visual Studio解决方案中:现在,我可以在CI服务器(TeamCity)上扩展MSBuild命令行:
/p:RunCodeAnalysis=true /p:ClOptions="/analyze:log%20MyApp.nativecodeanalysis.combined.sarif"
(我不得不将空白替换为%20
)。并生成一个SARIF文件,或者如果您希望每个代码文件都有一个SARIF文件:
/p:RunCodeAnalysis=true /p:CaOptions="/analyze:log:format:sarif"
如果要添加其他命令行开关,则必须使用
%20
将其分隔:/p:CaOptions=/analyze:log:format:sarif%20/analyze:log:compilerwarnings
**但是:**如果我在Visual Studio项目中激活Clang-Tidy,我会得到错误
CLANGTIDY : error : no such file or directory: '/analyze:log' [clang-diagnostic-error]
和CLANGTIDY : error : unable to handle compilation, expected exactly one compiler job in ...
-有人对此有什么想法吗(除了禁用Clang-Tidy)?