为了账号安全,请及时绑定邮箱和手机立即绑定

SonarScanner (C#) 不支持代码内 StyleCop 警告抑制

SonarScanner (C#) 不支持代码内 StyleCop 警告抑制

C#
守着一只汪 2023-07-09 16:40:43
我正在尝试使用 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 尝试复制不存在的文件时,构建会在后续步骤中失败。

您可以通过执行以下操作来检查您是否受到此错误的影响:

  1. 禁用 SonarQube/SonarCloud 分析步骤。

  2. 执行构建并检查它是否成功完成

  3. 现在,在 MSBuild 步骤中添加以下 MSBuild 参数:/p:ErrorLog=RoslynIssues.json然后检查构建是否仍成功完成。

如果 (2) 成功但 (3) 失败,那么您就会受到编译器错误的影响。

变通方法/解决方案:该错误已在 MSBuild 16.1 中修复,因此修复方法是升级到最新版本的编译器。如果这不可能,则可以选择通过编辑规则集将所引发问题的严重性从“错误”更改为“警告”。


查看完整回答
反对 回复 2023-07-09
  • 1 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信