使用 SonarQube Analysis 将警告视为错误
Treat Warnings as Errors using SonarQube Analysis
我一直在努力使我的解决方案在出现警告时无法基于 Visual Studio Team Services 构建。我在 VS2017 的项目中启用了将警告视为错误的选项,因此它不会构建。
此外,在 VSTS 上有一个用于相同目的的 MsBuild 参数设置为 true。
这是有效的,因为当有警告时,它被视为错误(例如,未使用的 int 是警告并变成错误,导致构建失败)。
但是,当存在 SonarQube Analysis 时,构建不会失败。 SonarQube 出于某种原因覆盖了“TreatWarningsAsErrors = true”,并且警告仍然是警告。
我没有找到在 SonarQube 服务器上启用 TreatWarningsAsError 的任何选项。我检查了规则、质量门等
这应该怎么做?
实际上,将 SonarQube 扫描器与 TreatWarningsAsErrors=true
一起使用没有什么意义,因为当构建中断时,我们的分析器将没有构建结果,结束步骤将不会执行,也没有问题将被推送到 SonarQube 上。如果您的构建没有问题,则没有理由使用 SonarQube。此外,TreatWarningsAsErrors=true
你将被迫事先修复所有问题,或者长时间忍受失败的构建,我不建议这样做。
SonarQube 允许您修复现有问题和新问题 little by little 并避免由于警告而导致构建失败很长时间。您可以依靠质量门来获得有关代码质量的反馈,如果您坚持,甚至可以在质量门未通过时构建失败(请注意,在大型项目中,这可能会影响构建时间)。
如果您的构建由于编译器警告而需要失败(请注意,SonarQube 不收集标准编译器警告,仅收集 Roslyn 分析器的结果),我建议创建一个单独的构建作业进行分析。通过这种方式,您将拥有两全其美 - SonarQube 中的问题跟踪和由于编译器警告而导致的构建失败。
你能做的就是通过
/warnaserror
作为 msbuild.exe 的参数。在不会被覆盖的 Azure DevOps 上,构建会在第一次警告时中断。如果你有一个非常干净的代码库,这可能是一个非常强大的质量门。
我一直在努力使我的解决方案在出现警告时无法基于 Visual Studio Team Services 构建。我在 VS2017 的项目中启用了将警告视为错误的选项,因此它不会构建。
此外,在 VSTS 上有一个用于相同目的的 MsBuild 参数设置为 true。
这是有效的,因为当有警告时,它被视为错误(例如,未使用的 int 是警告并变成错误,导致构建失败)。
但是,当存在 SonarQube Analysis 时,构建不会失败。 SonarQube 出于某种原因覆盖了“TreatWarningsAsErrors = true”,并且警告仍然是警告。
我没有找到在 SonarQube 服务器上启用 TreatWarningsAsError 的任何选项。我检查了规则、质量门等
这应该怎么做?
实际上,将 SonarQube 扫描器与 TreatWarningsAsErrors=true
一起使用没有什么意义,因为当构建中断时,我们的分析器将没有构建结果,结束步骤将不会执行,也没有问题将被推送到 SonarQube 上。如果您的构建没有问题,则没有理由使用 SonarQube。此外,TreatWarningsAsErrors=true
你将被迫事先修复所有问题,或者长时间忍受失败的构建,我不建议这样做。
SonarQube 允许您修复现有问题和新问题 little by little 并避免由于警告而导致构建失败很长时间。您可以依靠质量门来获得有关代码质量的反馈,如果您坚持,甚至可以在质量门未通过时构建失败(请注意,在大型项目中,这可能会影响构建时间)。
如果您的构建由于编译器警告而需要失败(请注意,SonarQube 不收集标准编译器警告,仅收集 Roslyn 分析器的结果),我建议创建一个单独的构建作业进行分析。通过这种方式,您将拥有两全其美 - SonarQube 中的问题跟踪和由于编译器警告而导致的构建失败。
你能做的就是通过
/warnaserror
作为 msbuild.exe 的参数。在不会被覆盖的 Azure DevOps 上,构建会在第一次警告时中断。如果你有一个非常干净的代码库,这可能是一个非常强大的质量门。