如何开始在大型遗留应用程序中执行 Resharper 规则

How to start to enforce Resharper rules in a large legacy application

我们在处理一个大型遗留应用程序。最老的代码库有 20 到 30 年的历史。许多开发人员多年来一直致力于此,并使用了不同的体系结构和编程风格。 大多数代码是 C#,一些 C++ 和很少的 VB6。我对这个问题的关注是C#代码。

作为一组架构师,我们希望清理代码并使其更易于维护。我们将 ReSharper 与 Visual Studio 2013(很快 VS 2015)一起使用。一些开发人员热衷于 "making ReSharper happy" 并让它不显示源代码文件的警告,而其他开发人员甚至不使用 ReSharper 或忽略发出的任何警告。 所以我们认为,让整个团队遵守相同规则的唯一方法是在持续集成构建中检查它,如果仍然有 ReSharper 警告,则失败。 这在新解决方案上非常有效,但在遗留代码中,它可以在每个 class 中显示数十个甚至数百个警告。 如果我们一次打开所有文件的所有规则检查,我们的软件将无法构建一个月。

根据我的经验,ReSharper 中的全自动代码重构很危险,因为它在某些情况下会改变逻辑。

问题 1: 那么如何为大型遗留应用程序引入规则检查呢? 我们使用 TFS2013。我了解到 Team City 有一个 ReSharper 插件,它允许保留旧代码,只检查签入中修改的内容。不幸的是,我们没有自由更改我们的构建服务器。
问题 2:但是有人知道 Team City 插件的工作原理吗?
问题 3:检查更改的 classed 的整个文件,还是只检查被修改的行?
问题 4: 适用于 class 结构的规则如何(如 public 的顺序、受保护和私有成员)?
我很想有类似的东西,比如用于 TFS 的 TeamCity 的 ReSharper 插件的差异检查,但我找不到任何东西。如果您知道类似的事情,请告诉我。

我很高兴听到你们中的任何一个人如何掌握引入规则检查。

我找到了有关 TeamCity 允许您执行的操作的描述:TeamCity

关于我的问题的重要部分是:TeamCity 可以配置为将每个源文件发现的问题与上次构建的问题进行比较。如果warning或error类型的问题比较多,可以让构建失败。

据我所知,TFS 没有这种能力,而且我不知道有任何附加组件可以完成类似的事情。

但是,我相信这种差异问题检查是最有希望改进遗留应用程序的方法之一。