有什么工具可以报告被注释掉的.net代码吗?

本文关键字:net 代码 注释 工具 什么 报告 | 更新日期: 2023-09-27 17:49:38

有没有人遇到过一个工具来报告。net应用程序中注释掉的代码?我说的是这样的模式:

//var foo = "This is dead";

/*
var foo = "This is dead";
*/

这不会被ReSharper或FxCop等工具发现,这些工具会查找未引用的代码。区分注释代码和注释文本有明显的含义,但这似乎不是一个太大的任务。

是否有任何现有的工具可以选择这个?即使它只是按文件报告事件,而不是完整的IDE集成。

编辑1:我也将此记录为StyleCop功能请求。似乎很适合这个工具。

编辑2:是的,我想这样做有一个很好的理由,它与代码质量有关。

有什么工具可以报告被注释掉的.net代码吗?

您可以使用regexp来识别以";"或"}"结尾的注释,从而得到一个近似的答案。

要获得更精确的方案,请参见以下答案:查找注释掉的VHDL代码的工具

我走这条路也是出于同样的原因。我或多或少按照Ira Baxter的建议做了(尽管我关注的是variable_type variable = value,并专门寻找由0个或多个空格组成的行,开头是//,后面是代码),为了处理/* */,我编写了一个预处理器,将其转换为//。我调整了正则表达式,以减少误报,也做了一个手动检查,只是为了安全;幸运的是,很少有注释会像drachenstern上面建议的那样做伪代码;YMMV。我很想找到一个可以做到这一点的工具,但是一些来自有效但可能过于详细的伪代码的误报将被真正排除,特别是如果他们使用识字的编程技术来使代码像伪代码一样"可读"。

(我也这样做了VB6代码;一方面,缺少;s使得对"简单"的正则表达式进行正确处理变得更加困难,另一方面,代码使用的类要少得多,因此更容易匹配变量类型(往往不在伪代码中)

另一个我看过但没有可用的选项是查看版本X中的代码行,然后//版本Y中的同一行的版本控制日志…当然,这是假设A)他们正在使用修订控制B)您可以查看它,C)他们没有在同一个修订中编写代码并注释它。(如果使用/* */comments

,就更复杂了)

还有另一个选择,Sonar。它实际上是一个以Java为中心的应用程序,但有一个插件可以处理c#代码。目前它可以报告:

    StyleCop错误
  1. <
  2. FxCop错误/gh><
  3. 宪兵错误/gh>
  4. 重复代码
  5. 注释代码
  6. 单元测试结果
  7. 代码覆盖率(使用NCover, OpenCover)

扫描确实需要一段时间,这主要是由于重复检查(AFAIK使用文本匹配而不是c#语法树),如果您使用内部默认derby数据库,它可能会在大型代码库中失败。然而,它对于您获得的代码基础度量非常有用,并且它具有快照特性,使您能够看到事情是如何变化的,并且(希望)随着时间的推移变得更好。

由于StyleCop没有被积极维护(参见https://github.com/StyleCop/StyleCop#considerations),我决定推出我自己的,dead-csharp:

https://github.com/mristin/dead-csharp

dead - sharp使用启发式方法在注释中查找代码模式。以///开头的注释被有意忽略(这样您就可以在结构化注释中编写代码)。

StyleCop将捕获第一个模式。它建议您使用////作为代码的注释,以便它将忽略该规则。

看到你提到的NDepends它也可以告诉你百分比评论http://www.ndepend.com/Metrics.aspx#PercentageComment。这是为应用程序、程序集、名称空间、类型和方法定义的。