.net 什么时候Stylecop设置不再有用,开始变得烦人?

.net 什么时候Stylecop设置不再有用,开始变得烦人?,.net,stylecop,xml-comments,ghostdoc,.net,Stylecop,Xml Comments,Ghostdoc,我在一个团队中工作,我们在StyleCop中使用了大量的规则集,我想知道对于这样一个工具不再有用而开始变得烦人这一点有什么想法。我们还使用GhostDoc,因此代码中充满了XML注释,这使得代码更难阅读,也更难查看。我对XML注释没有问题,并且发现它们在某些地方非常有用,但它们真的在每个字段和属性上都需要吗 我们有一个令人钦佩的目标“每个项目在构建时必须有0个警告”,但是这个目标肯定需要与一个合理的StyleCop规则集相冲突,否则就浪费了宝贵的时间来“修复”StyleCop警告的原因 对此有何

我在一个团队中工作,我们在StyleCop中使用了大量的规则集,我想知道对于这样一个工具不再有用而开始变得烦人这一点有什么想法。我们还使用GhostDoc,因此代码中充满了XML注释,这使得代码更难阅读,也更难查看。我对XML注释没有问题,并且发现它们在某些地方非常有用,但它们真的在每个字段和属性上都需要吗

我们有一个令人钦佩的目标“每个项目在构建时必须有0个警告”,但是这个目标肯定需要与一个合理的StyleCop规则集相冲突,否则就浪费了宝贵的时间来“修复”StyleCop警告的原因

对此有何想法

编辑 我现在真的想知道像stylecop这样的工具到底有什么理由?为什么不抛弃它,让合理的编码标准和良好的代码审查来处理其余的事情呢?尤其是在一个优秀的团队中?当然,获得0个警告的任务实际上会增加价值,因为所有警告都是相关的

我认为GhostDoc的唯一优点是它可以节省您从头开始编写XML注释的几秒钟时间。我认为你不应该在不编辑的情况下接受生成的评论——这可能会适得其反

这里是GhostDoc生成的xml注释所满足的Stylecop规则(SA1642:ConstructorSummaryDocumentationMustBeginWithStandardText)的组合-是否在一天结束时添加了任何值

    /// <summary>
    /// Initializes a new instance of the <see cref="SomeCustomType"/> class.
    /// </summary>
    /// <param name="someParameter">The someParameter.</param>
    public SomeCustomType(string someParameter)
    {
    }
//
///初始化类的新实例。
/// 
///参数。
公共SomeCustomType(字符串someParameter)
{
}

我认为这与其说是一个问题,不如说是一个咆哮,但我同意你的看法:

  • 过度执行样式规则是一件坏事
虽然源代码格式显然应该有指导方针,但过于规范的牢不可破的规则会导致令人不快的情况。在任何情况下严格遵守规则都会产生难以理解的混乱或过度包装的代码

编码是一种写作形式,正如奥威尔的奖金规则——“打破任何一条规则都比说任何完全野蛮的话要快。”​”—也需要应用于编码样式指南

我怀疑在一个能够设置和理解样式指南的有能力的程序员团队中,自动样式强制是一个好主意。自动lint对于捕捉意外错误很有用,但如果应用高度规范的代码格式规则,它们就不能考虑Orwell的规则。有了强大的规则集,这可能会导致您需要在可维护性的幌子下编写可维护性较差的代码

如果你的团队中没有那么有能力的程序员,他们的输出是一堆乱七八糟的东西,除非强迫他们改变风格,那么强制执行可能是一个好主意。(但是你可能会遇到更大的问题!)

  • 自动评论是一件非常糟糕的事情
我以前没见过鬼怪医生,但实际上我有点震惊

他们自己的头版上的例子如下:

/// <summary>
///     Determines the size of the page buffer.
/// </summary>
/// <param name="initialPageBufferSize">
///     Initial size of the page buffer.
/// </param>
/// <returns></returns>
public int determineBufferSize(int initialPageBufferSize) {
//
///确定页面缓冲区的大小。
/// 
/// 
///页面缓冲区的初始大小。
/// 
/// 
public int determinateBufferSize(int initialPageBufferSize){
几乎是一个错误注释的典型例子,它对文档中的代码添加了绝对零的洞察。这绝对比没有注释文档更糟糕


遵循Javadoc的所有源代码内文档模式有时都有点可疑,因为它们在源代码中塞满了通常针对最终用户的材料——与阅读代码的用户完全不同。但这是绝对的缺陷。我无法想象谁会认为这是个好主意。

当编写aro需要更多时间时根据规则,比减少维护所能得到的回报还要多


正如您所知,修复bug比编写bug要花费更多的时间,因此您仍然可以做大量额外的工作,使代码在达到阈值之前更加健壮和可维护。

代码编写良好、可读/可维护非常重要,但我们使用Visual Studio和Resharper的自动代码格式化帮助程序我们的代码和AtominerUtils以严格定义和整洁的格式保存XML文档注释

因此,主要的StyleCop规则是不相关的,因为我们的代码总是“默认”遵守重要的规则。次要的StyleCop规则对于日常使用来说往往过于严格。(这些规则中的大多数只对代码的质量或可读性进行了微小的改进(如果有的话),因此我们发现遵守这些规则的成本是不可接受的。我们允许我们的程序员有一点“表达自由”——只要他们的代码易于团队中的其他人阅读,我们不介意代码风格的微小变化).所以在评估StyleCop之后,我找不到任何实际的好处

相比之下,我们发现FXCop非常有用,因为它强调的问题不仅仅是小的可读性问题——它不时会发现严重的错误和性能问题。

StyleCop是一个工具。它不应该是现成的完美工具,也不应该满足每个人的需求

我个人说“是的,这很重要”-因为当你运行一个开发团队时,StyleCop可以帮助你确保你的编码准则得到遵守。这正是它的目的:以自动化、可测量、一致的方式评估编码标准。如果你不想在构建过程中做到这一点,那么你是对的-这是浪费时间

你自己说:零警告目标“需要与一个合理的StyleCop规则集相冲突。”运行任何配置与你的需求不匹配的工具都没有意义。如果规则对你来说“烦人”,那么关闭它——但对其他人来说,这可能是至关重要的

至于你的“母鹿”