有没有人遇到一个工具来报告.NET应用程序中已注释掉的代码?我在说的模式如下:
//var foo = "This is dead";
和
/*
var foo = "This is dead";
*/
ReSharper或FxCop等寻找未引用代码的工具无法找到。将注释代码与注释文本区分开来有明显的含义,但它似乎不是一项太大的任务。
有没有现成的工具可以选择这个?即使它只是通过文件而不是完整的IDE集成报告事件。
编辑1:我还logged this as a StyleCop feature request。似乎非常适合该工具。
编辑2:是的,我有理由这么做,这与代码质量有关。请参阅下面的评论。
答案 0 :(得分:5)
您可以使用识别评论的正则表达式获得大致答案,该结果以“;”结尾或“}”。
有关更精确的方案,请参阅以下答案: Tool to find commented out VHDL code
答案 1 :(得分:1)
出于同样的原因,我已经完成了这条道路。我或多或少做过的是Ira Baxter建议的(虽然我专注于variable_type变量=值并专门寻找由开头后面的0或更多空格组成的行,然后是//后跟代码(并处理/ * * /,我写了)一个将它转换成//的预处理器。我调整了reg exp以减少误报,并且还进行了人工检查以确保安全;幸运的是,很少有情况下评论是伪代码那样的东西正如drachenstern在上面提出的那样; YMMV。我很想找到一个可以做到这一点的工具,但是有效但可能过于详细的伪代码的一些误报将真正排除,特别是如果他们使用文字编程技术来使代码像伪代码一样“可读”。
(我也为VB6代码做了这个;一方面,缺乏;使得“简单”的reg exp变得更难,另一方面代码使用了很少的类,所以它更容易匹配不适合伪代码的变量类型
我看到但没有可用的另一个选项是查看版本X中代码的行的修订控制日志,然后查看版本Y中的相同行...这些课程假设A)他们正在使用修订控制B)您可以查看它,并且C)他们没有编写代码并在同一修订版中注释掉它。 (如果使用/ * * / comments
,会变得有点棘手答案 2 :(得分:1)
还有另一种选择,Sonar。它实际上是一个以Java为中心的应用程序,但有一个plugin可以处理C#代码。目前它可以报告:
由于重复检查(AFAIK使用文本匹配而不是C#语法树),它主要需要一段时间才能扫描,如果使用内部默认德比数据库,它可能会在大型代码库上失败。但是,它对于您获得的代码库指标非常有用,它具有快照功能,使您能够看到事情发生了变化,并且(希望)随着时间的推移变得更好。
答案 3 :(得分:1)
由于StyleCop没有得到积极维护(请参见https://github.com/StyleCop/StyleCop#considerations),所以我决定推出自己的死胡同:
https://github.com/mristin/dead-csharp
Dead-csharp使用启发式方法在注释中查找代码模式。故意忽略以///
开头的注释(以便您可以在结构化注释中编写代码)。
答案 4 :(得分:0)
StyleCop将捕获第一个模式。它建议您使用////
作为代码注释,以便忽略该规则。
答案 5 :(得分:0)
看到你提到的NDepends,它也可以告诉你Percentage评论http://www.ndepend.com/Metrics.aspx#PercentageComment。这是为应用程序,程序集,命名空间,类型和方法定义的。