【发布时间】:2014-03-05 13:44:25
【问题描述】:
在生产(发布)构建中启用静态代码分析是否会产生任何性能成本?
我们的 CI 服务器在 C# 项目的调试版本上运行代码分析,而发布版本禁用了静态代码分析(即未定义 CODE_ANALYSIS)。如果没有理由在生产构建上禁用代码分析,那么我就是在浪费时间进行调试构建。
Reflector 告诉我,如果禁用代码分析,SuppressMessage 属性将被排除,但我不认为额外的属性会影响运行时性能。这是启用静态代码分析(在 Visual Studio 2013 中)的唯一效果吗?
【问题讨论】:
-
我认为您从错误的角度看待这个问题。代码分析在未优化的 IL(调试版本)上可能会比在优化的 IL(发布版本)上提供更好的结果。
-
当您已经准备好构建并将发布构建部署到生产环境时,仍然需要修复来自代码分析的警告,这可能需要大量的代码重组和重新测试更改是一种非常低效的方法。性能不是问题。
-
@hvd 这是我最初想法的一部分,但我找不到任何证据表明代码分析在调试和发布版本中给出了不同的结果。可以吗?
-
@Hans 我们在编译时运行代码分析,如果在代码分析过程中发现任何警告,我们的 CI 服务器会在部署前很久就停止构建链,所以不用担心。
-
静态代码分析就是这样 - 静态的。它作为构建过程步骤运行。没有理由在可能运行混淆器的构建上运行该构建过程步骤,也没有理由不在这样的构建上运行它。
标签: c# code-analysis fxcop