我是 TFS 配置的新手。
目前我们的项目已经完成了 50%,但我们发现我们的代码非常糟糕。我们认为需要像 Resharper 这样的静态代码分析或像 StyleCop、CodeAnalysis 和 FxCop 这样的其他产品。
我们希望将 TFS 配置为在签入包含触发代码分析警告的代码时拒绝签入。
但是对于之前的代码,我们想要抑制现有的警告,以防止代码变得比现在更糟。
我是 TFS 配置的新手。
目前我们的项目已经完成了 50%,但我们发现我们的代码非常糟糕。我们认为需要像 Resharper 这样的静态代码分析或像 StyleCop、CodeAnalysis 和 FxCop 这样的其他产品。
我们希望将 TFS 配置为在签入包含触发代码分析警告的代码时拒绝签入。
但是对于之前的代码,我们想要抑制现有的警告,以防止代码变得比现在更糟。
正如 Ivan 所提到的,您的根本原因不是缺乏分析工具,而可能是开发团队与其项目发起人之间商定的质量和严格程度(或目前在团队成员之间强制执行)。可能是团队压力太大,导致重要的审核动作被跳过,或者团队(或赞助商!)对质量的渴望与您或赞助商不同。或者团队没有适当的知识水平来防止这些问题的发生。
解决这个问题的最好方法是在短时间内尽可能多地修复。
警告:我曾与许多团队一起体验过同时打开太多规则的影响。通常,人们不愿意承认他们的工作没有达到标准,并且打开不会直接导致错误的规则(例如,“标识符大小写错误”)可能会导致挫败感,从而严重阻碍你的发展势头. 根据我的经验,仔细选择哪些规则现在需要解决,哪些可以等待以后更好地解决。一旦团队开发出解决此类问题的方法,您就可以轻松地应用更多。
为您的解决方案启用代码分析或使用 Resharper 的解决方案范围分析功能等工具可以帮助您发现问题,但除非您的团队停止创建它们,否则它不会解决它们或防止将来出现类似问题。
提示:请注意,您可以在构建期间打开 Resharper,也可以使用 Resharper CLI 功能。
StyleCop 如果代码本身糟糕到足以触发可能包含错误和问题的大量警告,我不会对这个团队强制执行(目前)。先解决这些问题,以后再写代码。您现在的首要任务是消除任何可能的错误。
CodeAnalysis 和 FxCop 是相同的东西,所以你不需要同时打开它们。ALT像 Resharper 这样的工具可以帮助您的开发人员通过使用魔法键+快速消除很多问题ENTER。
如果您想创建一个干净的基线,您可以运行一次代码分析,然后选择所有生成的警告,然后选择Suppress in global suppression file. 这将适用于代码分析问题,但不会抑制任何编译器警告,没有简单的方法可以快速抑制所有当前编译器警告。
提示:有时临时重命名任何现有文件会有所帮助
globalsupressions.cs
,以便单独存储此“基线”。然后,您就知道以后必须修复哪些警告。提示:当开发人员抑制警告时,让他们在
Justification="Reason for suppression"
生成的抑制中添加一个,这样您就可以区分仔细考虑的抑制和临时的抑制。
根据您是否已经拥有构建服务器,下一步是安装 Team Build,一旦您拥有构建服务器,您将需要设置构建定义。这篇博文涵盖了大部分步骤。
在构建定义中,将触发器设置为“Gated Checkin”,并在 Process 选项卡上确保将 Code Analysis 设置为“Always”。如果您想基于代码分析错误使您的构建失败,您需要创建一个自定义规则集并为您的解决方案配置它。
要使编译器错误使构建失败,您还可以启用“将警告视为错误
启用封闭式签入构建后,将提示所有开发人员更改以等待其构建完成。您可以打开警报(使用 Web 访问)或使用构建通知工具在更改成功提交时获得通知。
提示:除了一次打开所有规则(或将它们全部切换以在构建期间导致错误)之外,您还可以选择一次打开几个规则并修复它们。按类别启用规则为您提供了一个很好的机会,让人们了解启用规则的重要性以及修复它们的可能解决方案。
一个更高级的解决方案是在您的 Team Build 环境中安装和配置 SonarQube。ALM Rangers 和 Sonar 最近合作创建了安装指南和一些扩展,以实现 Team Build 和 SonarQube 的集成。您可以在此处找到安装指南。