我继承了运行5.1版并分析数十个Unity C#项目的SonarQube Linux服务器的责任。在将其升级到SQ 6.1之后,我发现在5.5版本中删除了对非Windows系统上的C#项目进行分析的支持,因此我将其降级为5.4版本。
我随后将Windows系统设置为Jenkins节点和SonarQube服务器。但是,我希望用SonarQube评估的项目(主要)是在Unity上开发并且(总是)构建在macOS上,因此缺少MSbuild解决方案文件。我是否可以在这些约束中使用SonarQube,而不是在项目中添加特定于Visual Studio的代码?是否存在某种虚拟解决方案文件,我可以将其添加到项目中,以便在不期望生成工作二进制文件的情况下进行分析(沿着解析/标记化而不编译/链接)?感谢。
答案 0 :(得分:1)
这是我为通过Jenkins分析SonarQube中的Unity项目而开发的程序。
面向用户的Jenkins作业,具有以下设置和选项,以及特定于我的环境的其他设置。
PROJECTKEY
PROJECTNAME
PROJECTVERSION
refs/heads/master
。HOME=C:\Users\Jenkins
(或适用于您的系统)。此环境变量使git可以找到与Git服务器一起使用的正确ssh凭据。你需要把你的git私钥放在%HOME%\.ssh
;在其他地方记录下来并留给读者练习。SonarQube_Scanner
。log.zip
。非面向用户的Jenkins作业( SonarQube_Scanner ),具有以下设置和选项。
构建环境 - 将构建过程中的环境变量注入。
属性内容包含
`LANG=en_US.UTF-8`
<强>构建强>
执行Windows批处理命令包含
set FILENAME=%WORKSPACE%\client\Assets\Editor\SQMenuItems.cs
REM Yes, this syntax works and is sooo much more readable
> %FILENAME% ECHO using UnityEditor;
>> %FILENAME% ECHO public static class SQMenuItems {
>> %FILENAME% ECHO static void AssetsOpenCSharpProject() {
>> %FILENAME% ECHO #if UNITY_5
>> %FILENAME% ECHO EditorApplication.ExecuteMenuItem("Assets/Open C# Project");
>> %FILENAME% ECHO #else
>> %FILENAME% ECHO EditorApplication.ExecuteMenuItem("Assets/Sync MonoDevelop Project");
>> %FILENAME% ECHO #endif
>> %FILENAME% ECHO EditorApplication.Exit(0);
>> %FILENAME% ECHO }
>> %FILENAME% ECHO }
"C:\Program Files\Unity_5.5.2\Editor\Unity.exe" -quit -batchmode -nographics -logFile "%WORKSPACE%\log.txt" -buildTarget android -projectPath %WORKSPACE%\client -executeMethod SQMenuItems.AssetsOpenCSharpProject
"C:\Program Files\7-zip\7z.exe" -tzip a log.zip log.txt
.sln
和.*proj
文件的原因。 .sln
和.*proj
文件通常位于.gitignore
文件中,因此不在存储库中。用于MSBuild的SonarQube扫描仪 - 开始分析
${PROJECTKEY}
。${PROJECTNAME}
。${PROJECTVERSION}
。其他参数
/d:sonar.exclusions=**\\SQMenuItems.cs
执行Windows批处理命令
"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" /maxcpucount /nr:false /nologo /target:rebuild /verbosity:quiet client\client.sln
client\client.sln
以符合您的环境。我还没有尝试用面向用户的Jenkins作业中定义的环境变量替换它。SonarQube.Analysis.xml
文件专门禁止分配属性sonar.projectName
,sonar.projectKey
和sonar.projectVersion
。