【发布时间】:2010-11-24 16:30:08
【问题描述】:
作为最佳实践,您是在调试版本和发布版本上运行代码分析,还是只在其中一个上运行?
【问题讨论】:
-
调试和发布版本是什么意思?代码应该是一样的...
-
在 .Net 中,如果您广泛使用条件输出,您可能会产生略有不同的构建。
标签: code-analysis
作为最佳实践,您是在调试版本和发布版本上运行代码分析,还是只在其中一个上运行?
【问题讨论】:
标签: code-analysis
我通常会选择一个,那个是发布版本。我想这并不重要,但我倾向于认为,在收集有关将在生产中运行的信息时,最好准确地测试什么将进入生产(这用于分析、分析、基准测试等)。
【讨论】:
无论您的构建类型如何,静态代码分析都会显示相同的结果。
调试/发布仅更改生成的程序集以及在运行时包含或排除调试信息。
【讨论】:
我没有单独的“调试”和“发布”版本(请参阅 Separate ‘debug’ and ‘release’ builds?)。
【讨论】:
如果由于某种原因这两个版本不同(它们确实不应该用于静态分析),您应该确保您的指标与实际用于生产的指标相一致。
理想情况下,您应该有一个 CI 服务器,并且开发人员运行以启动此类分析的命令与 CI 服务器所做的没有什么不同。
【讨论】:
LLVM 人员实际上建议分析 DEBUG 配置:
始终在“调试”配置中分析项目
大多数项目都可以在启用断言的“调试”模式下构建。 断言被静态分析器拾取以修剪不可行的 路径,在某些情况下可以大大减少错误的数量 该工具发出的肯定(虚假错误报告)。
此外,调试构建往往更快(无需优化),在 CI 世界中,更快总是更好(其他条件相同)。
【讨论】: