我正在尝试使用 SonarQube 为我的组织进行静态代码分析。我们所有的 C# 项目都已经启用了 StyleCop,这在代码可读性方面对我们帮助很大。现在我们想利用 SonarQube 进行静态代码分析。当代码中没有警告抑制时,我能够成功运行分析并生成声纳报告。问题:Sonarqube 不考虑代码内警告抑制,并且 msbuild 失败。我创建了一个示例 C# 控制台应用程序项目来演示我面临的问题。StyleCop 已启用(已安装 nuget:StyleCop.Analyzers v1.1.118)并且警告将转换为错误。以下是规则集的片段.........<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers">......<Rule Id="SA1307" Action="Error" />......该项目有以下文件: 1. Program.cs// <copyright file="Program.cs" company="PlaceholderCompany">// Copyright (c) PlaceholderCompany. All rights reserved.// </copyright>namespace StyleCopSonarQubeIssue{ /// <summary> /// The program class. /// </summary> internal class Program { /// <summary> /// Defines the entry point of the application. /// </summary> /// <param name="args">The arguments.</param> public static void Main(string[] args) { // Method intentionally left empty. } }}系统信息.cs// <copyright file="SystemInfo.cs" company="PlaceholderCompany">// Copyright (c) PlaceholderCompany. All rights reserved.// </copyright>namespace StyleCopSonarQubeIssue{ using System.Runtime.InteropServices; /// <summary> /// The sytem info enum. /// </summary> [StructLayout(LayoutKind.Sequential)] public struct SystemInfo { /// <summary> /// Oem Id. /// </summary> public uint dwOemId; /// <summary> /// Page size. /// </summary> public uint dwPageSize; }}
1 回答
慕仙森
TA贡献1827条经验 获得超7个赞
看起来像编译器错误。
该错误在于,在某些情况下,要求编译器将分析问题写入文件会阻止编译器生成 .dll/.exe 文件。但是,编译器也不会发出任何错误。当 MSBuild 尝试复制不存在的文件时,构建会在后续步骤中失败。
您可以通过执行以下操作来检查您是否受到此错误的影响:
禁用 SonarQube/SonarCloud 分析步骤。
执行构建并检查它是否成功完成
现在,在 MSBuild 步骤中添加以下 MSBuild 参数:
/p:ErrorLog=RoslynIssues.json
然后检查构建是否仍成功完成。
如果 (2) 成功但 (3) 失败,那么您就会受到编译器错误的影响。
变通方法/解决方案:该错误已在 MSBuild 16.1 中修复,因此修复方法是升级到最新版本的编译器。如果这不可能,则可以选择通过编辑规则集将所引发问题的严重性从“错误”更改为“警告”。
- 1 回答
- 0 关注
- 137 浏览
添加回答
举报
0/150
提交
取消