代码之家  ›  专栏  ›  技术社区  ›  Buda Gavril

SonarQube分析任务更改构建的输出

  •  0
  • Buda Gavril  · 技术社区  · 6 年前

    在设置CI环境时,在buld定义中,我们有一个任务“ 准备SonarQube分析 “以及构建解决方案的另一项任务。

    构建解决方案的任务基于dotnet CLI( dotnet构建 )它接收3个参数:配置(release)、sln文件和输出(将保存二进制文件的输出文件夹)。该解决方案包含2个项目:a。net标准类库和。net framework 4.6.2类库。

    为了测试CI,我创建了一个分支,并从中删除了符合CLS的属性。net framework项目,希望我能使构建失败(我将所有警告都视为错误,我的规则集文件包含在项目中,其中包含规则 CA1014 ,关于CLS合规性)。

    我感到惊讶的是,只有禁用SonarQube分析步骤,构建才会在TFS中失败。启用此步骤后,构建将通过,即使我在日志中看到此警告,构建也会以成功结束。

    你们知道如何解决这个问题吗?

    此外,如果这不是问这个问题的合适网站,请建议我,我会提出这个问题。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Cece Dong - MSFT    6 年前

    从案例中检查原因 Treat Warnings as Errors using SonarQube Analysis :

    实际上,使用SonarQube没有什么意义 带的扫描仪 TreatWarningsAsErrors=true ,因为当生成 中断,我们的分析器将不会有构建结果,结束 不会执行步骤,也不会在SonarQube上推送任何问题。 如果生成中没有问题,则没有理由使用 SonarQube。此外,使用 TreatWarningsAsErrors=真 你会的 被迫提前修复所有内容,或忍受失败的构建 很长时间了,我不建议这样做。

    SonarQube允许您修复现有和新问题 little by little 并避免由于警告而使构建长期失败。你 可以依靠质量关卡获得有关代码质量的反馈,以及 甚至,如果你坚持,在质量关卡没有关闭的情况下,也会使构建失败 通过(请注意,对于大型项目,这可能会影响构建时间)。

    如果由于编译器警告而要求生成失败(请注意 SonarQube不收集标准编译器警告,只是 Roslyn分析仪的结果),我建议创建 单独的构建作业进行分析。这样你就可以 两个世界-SonarQube中的问题跟踪和失败的构建,因为 的编译器警告。

        2
  •  0
  •   Buda Gavril    6 年前

    我从这里读到 documentation 并声明:

    “开始”步骤将修改您的构建,如下所示:

    • 您的项目引用的所有现有代码分析器都将被禁用,并且只有SonarQube插件中的分析器将被禁用 已执行
    • 将更新活动的CodeAnalysisRuleSet以匹配SonarQube质量配置文件
    • 警告ASERRORS将被关闭

    如果您的构建过程无法容忍这些更改,我们建议您 为SonarQube分析创建第二个构建作业。

    这就是为什么在启用此任务的构建过程中,我的一些规则会被忽略。