SQAnalysisFileItemTypes正确用法:Qt项目QtMoc头文件分析问题
解决SonarQube分析Qt C++项目时忽略QtMoc标签文件的问题
我之前也碰到过类似的情况,SonarQube默认只会识别你提到的那些ItemTypes,QtMoc不在默认列表里,所以确实需要通过参数扩展来让它识别这类文件。
首先,你之前尝试的命令语法有两个小问题:
- 重复写了两次相同的参数(带OR的部分是多余的)
- 引号的位置可能没处理好,导致变量展开或者参数解析出错
正确的命令写法
你需要根据自己使用的分析方式选择对应的命令:
1. 使用MSBuild直接运行分析
如果是通过MSBuild调用SonarQube分析,正确的参数传递方式是:
MSBuild.exe /t:Rebuild /d:sonar.SQAnalysisFileItemTypes="$(SQAnalysisFileItemTypes);QtMoc"
这里的$(SQAnalysisFileItemTypes)是MSBuild内置的变量,会自动展开为默认的ItemTypes列表,加上;QtMoc就能把QtMoc类型的文件追加进去。
2. 使用SonarScanner for .NET(dotnet命令)
如果是用dotnet sonarscanner工具,命令应该是:
dotnet sonarscanner begin /d:sonar.SQAnalysisFileItemTypes="$(SQAnalysisFileItemTypes);QtMoc" # 接着执行构建命令 dotnet build # 结束分析 dotnet sonarscanner end
3. 避免变量展开问题的备选写法
如果遇到$(SQAnalysisFileItemTypes)变量无法正确展开的情况(比如在某些命令行环境中),可以直接手动列出所有默认类型加上QtMoc:
/d:sonar.SQAnalysisFileItemTypes="Compile;Content;EmbeddedResource;None;ClCompile;ClInclude;Page;TypeScriptCompile;QtMoc"
验证是否生效
运行分析之后,登录SonarQube控制台,进入你的项目,查看「代码」页面的文件列表,确认那些标记为<QtMoc Include="SOMECLASS.h"/>的头文件已经出现在列表中,就说明配置生效了。
这个参数是完全有效的,SonarQube的.NET分析器确实支持通过sonar.SQAnalysisFileItemTypes来扩展需要扫描的项目文件类型,只要参数传递正确,就能解决QtMoc文件被忽略的问题。
内容的提问来源于stack exchange,提问作者tiga05
相关产品推荐
相关产品推荐

