Visual Studio 如何强制msbuild在CodeAnalysis上创建SARIF文件

v8wbuo2f  于 2022-11-17  发布在  其他
关注(0)|答案(2)|浏览(246)

如果我在Visual Studio 2022中运行代码分析(在C++项目上),我会得到每个代码文件的XML和SARIF文件。

否,我尝试使用MSBuild 2022运行代码分析:
MSBuild.exe solution.sln -p:Configuration=Release /p:RunCodeAnalysis=true
但是通过这个调用,我只得到了代码分析XML文件,而没有SARIF文件。
知道如何强制MSBuild创建SARIF文件吗?

xhv8bpkk

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格式。

yrdbyhpb

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解决方案中:

<?xml version="1.0" encoding="utf-8"?> 
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemDefinitionGroup>
     <ClCompile>
         <AdditionalOptions>$(ClOptions) %(AdditionalOptions)</AdditionalOptions>
     </ClCompile>
   </ItemDefinitionGroup>
 </Project>

现在,我可以在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)?

相关问题