如何摆脱 StyleCop

14

我们团队中的某个人安装了StyleCop,自那时起,他加载并提交到源代码控制的所有项目都拒绝加载,除非安装StyleCop。

我知道我可以手动编辑.csproj文件来摆脱它,但是否有一种简单的方法自动从项目文件中删除这些StyleCop部分,以便在未受StyleCop感染的Visual Studio机器上加载和构建?


你是否已经从项目中删除了所有对StyleCop程序集的引用?你可以通过Visual Studio来删除这些引用。 - Bernard
我建议你仍然使用StyleCop,它确实很有价值,但也许你应该将其用作外部工具,这样就不需要对现有项目进行任何更改。 - Bernard
1
我认为StyleCop是Visual Studio的一个工具,它允许你通过IDE突出显示源代码中违反的规则,那么为什么需要从项目中添加对它的引用呢?我已经使用StyleCop有一段时间了,但并没有看到它向我的项目或源文件中添加任何内容。 - Piers Myers
@haarrrgh - 感谢您为我澄清这一点。我必须承认,我只在独立项目中使用过StyleCop,并没有进行集成的MSBuild。 - Piers Myers
2
我来到这个问题是因为当我移除了StyleCop并且每次加载VS或项目时,它都会给我一个警告,说包没有正确加载。我无法在任何地方找到答案,但我使用devenv /Setupdevenv /ResetSettings解决了它。希望能帮助到某些人。 - MasterMastic
显示剩余2条评论
4个回答

22

为什么要移除它?
在我看来,使用StyleCop是一件好事。
您唯一的问题似乎是您的团队成员没有正确设置StyleCop。

根据您的描述,我猜他想要使用MSBuild集成设置StyleCop: http://blogs.msdn.com/b/sourceanalysis/archive/2008/05/24/source-analysis-msbuild-integration.aspx

显然,他只是漏掉了最后一段“团队开发”:将StyleCop文件复制到您的项目中并将其检入源代码控制,这样您就不需要在每个开发人员的计算机上安装StyleCop。 (请参阅我的链接以获取更详细的说明)

如果这样做,StyleCop应该在每台机器上都可以工作,无论是否安装它。

我们也是以这种方式使用StyleCop,我认为这是最简单的方法。
我只需在每个 .csproj 文件中插入两行代码并将几个文件检入源代码控制一次......StyleCop 就会在每次编译、每台机器上(无论是在开发人员机器上还是构建服务器上)自动工作。


17
Stylecop 不是一个好东西。我们并不总是能够控制我们所使用的代码 - 特别是我们所使用的“核心”代码是由另一个国家的团队编写的,让我们说一下默认的 Stylecop 选项只会创建几千个违规警告,并且他们没有一个一致的系统,所以我们要么接受这些警告,要么在我们的代码中摆脱它,回到旧的做法,使我们的代码看起来漂亮,而不需要任何“帮助”。 - gbjbaanb
11
你可以在StyleCop中禁用某些规则。并且你可以仅针对特定项目启用StyleCop。因此,如果来自其他团队的代码违反了太多规则,你可以仅禁用他们的代码的StyleCop,而保持你的代码启用。 - Christian Specht
3
关于“如果您没有安装StyleCop,它们将出错”的问题: 如果您将StyleCop文件放入您的项目并将其检入源代码控制,则不会出现错误。请查看我回答中的链接,其中有详细描述(在“团队开发”部分的最后一段)。 - Christian Specht
将StyleCop二进制文件检入SCM并(我猜)每次构建时都将其取出?你不如在所有地方安装它,而不是管理依赖关系。那个链接并没有提供一个好的答案。我仍然更愿意摆脱它 - 我们是一个敏捷的团队,所以我更喜欢通过沟通来解决这种问题,而不是强制使用会破坏构建的严格工具。 - gbjbaanb
10
StyleCop鼓励人们记录那些不需要记录的事情(例如具有明显名称的属性,如“Surname”),并且不会为复杂代码提供任何文档。因此,在编写非常基本的代码时,它会导致开发人员忽略重要的文档,并妨碍他们的工作流程。该代码还会变得臃肿,包含不必要的格式,这会影响可读性。 - NickG
显示剩余2条评论

20

Stylecop隐藏了真正的警告。这是一种虚荣的行为,是邪恶的。

不要使用它。

我发现Stylecop会生成许多琐碎的警告,淹没了真正的警告。尽管可以使用这些工具,但不要强制使用它们。没有stylecop警告是一个毫无意义的指标。


4
它如何隐藏真实的警告? - MasterMastic
7
有些开发者写出糟糕、难以维护的代码,却因为没有Style Cop问题而认为“看,没有真正的警告!”。这种情况会掩盖真正的警告信息。 - Po-ta-toe
23
每种工具都必须根据其目的进行使用。StyleCop并不是说您的代码没问题,它只是说它的格式与一组规则保持一致。与任何版本控制系统(svn/git)中的自动合并相同,它从未表示在合并后您的代码是一致的:它只是说所有更改已根据合并规则合并在一起。然而,确保代码一致性(例如编译和单元测试通过)是您的责任。 - Isantipov
我发现StyleCop会生成很多琐碎的警告,这些警告会淹没真正的警告。尽管使用这些工具是可以的,但不要强制开启它们。没有StyleCop警告是一个毫无意义的指标。 - Stephen
5
StyleCop是一款很棒的工具。禁用你不同意的警告。 - GaTechThomas

15

我通过在解决方案根目录下的settings.stylecop文件中添加以下GlobalSettings配置来禁用StyleCop。

<StyleCopSettings Version="4.3">
  <GlobalSettings>
    <BooleanProperty Name="RulesEnabledByDefault">False</BooleanProperty>
  </GlobalSettings>
  ...
</StyleCopSettings>

1
+1 - 谢谢你!开源项目不应该使用StyleCop。 - M.Babcock
1
你能将这个标记为答案吗?当前标记的答案实际上根本没有回答问题,它只是分享了对StyleCop的看法。 - Marshall Conover
2
@MarshallConover 嗯,刚看到了,距离提问已经过去3年,需要解决问题已经过去8年了 :-) - gbjbaanb
@gbjbaanb 迟到总比不来好。感谢您的点赞。 - Mikael Engver

14

测试驱动开发

Red -> Green -> Refactor

测试驱动开发(与StyleCop一起)

Red -> Red -> WTF? -> Red -> Red -> ...

同时,来自这里

Bob:使用模式匹配,软件会识别出丑陋的代码
Charlie: ——并修复它!
Bob:不,它会打印关于每个违规行为的信息。
Charlie: 然后用户右键点击修复所有问题?
Bob:不,该消息指责他们“逗号周围的无效空格”。
Charlie: 然后解释用户如何修复它?
Bob:没有,这些信息在另一篇文档中。
Charlie: 在Google上?
Bob:不是。


这就是为什么不要使用Stylecop


它可能会变得更糟...在一个名为Process_Build_Style_Instructions_001_06_A.doc的Word文档中,其中包含一个巨大的表格,保存在SharePoint上。 - gbjbaanb
1
不,实际上不行。你曾经被迫使用过这个吗? - tom redfern
SharePoint?唉,是的 :( 一个充满垃圾的“受控”Word文档?唉,是的 :( Stylecop?唉,是的 :( - gbjbaanb
不,我是说stylecop。强制使用stylecop是违反《日内瓦公约》的行为。 - tom redfern
1
它还会使你的构建速度变得极其缓慢。 - Berin Loritsch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接