C# 如何摆脱StyleCop

C# 如何摆脱StyleCop,c#,stylecop,csproj,C#,Stylecop,Csproj,我们团队中有人安装了StyleCop,从那以后,他加载并致力于源代码管理的所有项目都拒绝加载,除非安装了StyleCop 我知道我可以手动编辑.csproj文件来删除它,但是有没有一种简单的方法可以自动从项目文件中删除这些stylecop部分,以便它们可以在未感染stylecop的Visual Studio机器上加载和构建 为什么要删除它? 在我看来,使用StyleCop是一件好事。 您唯一的问题似乎是您的团队成员没有正确设置StyleCop 根据您的描述,我猜他想用MSBuild集成设置Sty

我们团队中有人安装了StyleCop,从那以后,他加载并致力于源代码管理的所有项目都拒绝加载,除非安装了StyleCop

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

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

根据您的描述,我猜他想用MSBuild集成设置StyleCop:

他显然遗漏了最后一段“团队开发”:将StyleCop文件复制到您的项目中,并将其签入源代码管理,这样您就不需要在每台开发人员机器上安装StyleCop。(有关更详细的描述,请参阅我的链接)

如果这样做,不管是否安装了StyleCop,它都应该在每台机器上工作

我们也以这种方式使用StyleCop,我认为这是最简单的使用方式。

我只需要在每个.csproj文件中插入两行代码,并在源代码管理中检查几个文件一次……而StyleCop只在每一次编译中、每一台机器上工作(无论它是在开发人员机器上还是在构建服务器上)。

StyleCop隐藏了真正的警告。这是一种虚荣,也是一种罪恶

不要使用它


我发现stylecop生成了许多琐碎的警告,这些警告掩盖了真正的警告。一定要使用这些工具,但不要强迫它们打开。没有stylecop警告是一个毫无意义的指标。

测试驱动开发

Red -> Green -> Refactor

测试驱动开发(使用STYLECOP)

此外,来自:

鲍勃:软件使用模式匹配识别难看的代码
查理:-然后修好它
鲍勃:没有。它会打印一条关于每一次违规的信息。
查理:然后用户右键单击来修复所有问题?
鲍勃:没有。这条消息责备他们“逗号周围的空格无效”。
查理:然后解释用户如何修复它?
鲍勃:不,这些信息在单独的文档中。
查理:在谷歌上?
鲍勃:没有



这就是为什么不使用Stylecop

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

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

假的
...

您是否删除了项目中对StyleCop程序集的所有引用?您可以通过Visual Studio删除这些引用。我建议您仍然使用StyleCop,它确实增加了价值,但是,也许您应该在外部使用它,这样您就不需要对现有项目进行任何更改。我认为StyleCop是Visual Studio的一个工具,它允许您通过IDE突出显示源代码中被破坏的规则,为什么您需要从您的项目中添加对它的引用?我已经使用StyleCop有一段时间了,没有看到它向我的项目或源文件中添加任何内容。@Piers:规则不一定在IDE中突出显示。如果在每个.csproj文件中插入两行,并将StyleCop DLL放在项目文件夹中,则编译时违反的规则会导致错误…无论是在Visual Studio中还是使用MSBuild编译,我提出这个问题是因为当我删除StyleCop时,每当我加载VS或projects时,它都会警告我包没有正确加载。我在任何地方都找不到答案,但我使用
devenv/Setup
devenv/ResetSettings
解决了它。希望它能帮助别人。Stylecop不是一件好事。我们没有;我们不能总是控制我们使用的代码,尤其是我们的“核心”代码是由另一个国家的不同团队编写的,而且。。假设默认的stylecop选项只创建几千个冲突。他们没有一个一致的系统,所以我们要么接受这些警告,要么在代码中去掉它,然后回到老式的方式,在没有任何“帮助”的情况下让代码看起来很好。这就给我留下了一个问题,那就是去掉thsoe 2 csproj行-就像曾经一样,如果没有安装stylecop,它们就会出错。(或stylecop的旧版本-因此,如果生成服务器有v1,并且有人升级了其本地副本,则生成服务器开始出错。PiTA)您可以在stylecop中禁用某些规则。并且您只能为某些项目启用StyleCop。因此,如果来自另一个团队的代码违反了太多规则,您可以为他们的代码禁用Stylecop,并为您的代码保持启用状态。关于“如果您没有安装Stylecop,则会出错”:如果您将Stylecop文件放入项目中并将其签入源代码管理,则不会。看看我答案中的链接,它有一个详细的描述(在最后一段“团队开发”)。StyleCop鼓励人们记录不需要记录的东西(例如带有明显名称的属性,如“姓氏”),而不做任何事情来记录复杂的代码。因此,它会导致开发人员忽略重要的文档,同时妨碍他们的工作流程编写非常基本的代码。代码也会因为不必要的格式而变得臃肿,这会影响可读性。它如何隐藏真正的警告?它隐藏真正的警告,因为一些开发人员会说“看,没有样式问题!”尽管编写了糟糕的、无法维护的意大利面代码,但每个工具都必须根据其用途来使用。Stylecop并没有说您的代码是正确的,它说,它的格式与规则集是一致的。与任何VCS(svn/git)中的自动合并相同,它从不说在合并后您有代码支持:它只是说,所有更改都已根据合并规则合并在一起。但是,您有责任确保代码的一致性
<StyleCopSettings Version="4.3">
  <GlobalSettings>
    <BooleanProperty Name="RulesEnabledByDefault">False</BooleanProperty>
  </GlobalSettings>
  ...
</StyleCopSettings>