ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – 在生产版本中不启用CODE_ANALYSIS的任何原因?

2019-05-17 09:53:27  阅读:322  来源: 互联网

标签:c code-analysis fxcop


在生产(发布)版本中启用静态代码分析时是否存在任何性能成本?

我们的CI服务器在我们的C#项目的调试版本上运行代码分析,而发布版本禁用静态代码分析(即未定义CODE_ANALYSIS).如果没有理由在生产版本上禁用代码分析,那么我就是在浪费时间进行调试构建.

反射器向我显示,如果禁用代码分析,则排除SuppressMessage属性,但我不希望额外属性影响运行时性能.这是启用静态代码分析的唯一效果(在Visual Studio 2013中)吗?

解决方法:

在使用启用CODE_ANALYSIS关键字进行编译时存在实际差异,例如,the compiler will remove all [SuppressMessage] attributes from the assembly when it is not enabled(因此可能会导致在以后从命令行运行FxCop时显示消息,因为已删除了Suppressions).如果您在内部系统上安装二进制文件,可以将抑制项留在二进制文件中.有些公司希望将它们从发布给第三方的程序集中删除,因为这些属性(以及Justification属性的内容)的存在可能会泄露敏感信息.

在DEBUG构建上运行代码分析时,您可能会得到更严格的结果,大多数RELEASE构建中发生的某些优化会导致特定的FxCop规则丢失.优化可以删除私有方法(通过内联)或用值替换对常量的调用,而不是常量的定义. FxCop无法验证这些项目,因为它们已被删除.这是可以预料的.

为获得最佳结果:在Debug构建中运行代码分析.至少信息泄露,从发布版本中删除CODE_ANALYSIS常量.

标签:c,code-analysis,fxcop
来源: https://codeday.me/bug/20190517/1120240.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有