用于查找已注释掉的VHDL代码的工具

时间:2011-03-08 17:30:34

标签: comments vhdl

This question询问一般性问题。我特别询问VHDL,因为提出问题答案的工具是针对Java和PL / SQL的。它不需要是完美的,一些手动解释会很好。我这样做是为了自动提交任务。

编辑3/9/11:@phillipe指出自动提交任务与手动解释不一致。我正在努力鼓励其他工程师摆脱代码并看到他们做到了。我猜一个悲观的工具对于提交会更好;如果它错过了一些不是世界末日的代码。或者我可以报告这些行的数量并通过电子邮件发送给我,而不是停止提交。

2 个答案:

答案 0 :(得分:3)

在我看来,理想的答案要求您应用一个可以识别语言子串的解析器到每个注释的内容。如果语法错误率与注释的大小相比较小,则表示您已注释掉代码。

为此,您需要一个愿意解析不完整代码片段的解析器。提供源到源转换的程序转换系统(如果你看到这个结构,用它替换它)就有内置的这个机器;它们必须解析包含源到源转换的代码模式,这些转换通常是语言句子形式。

我们的DMS Software Reengineering Toolkit正是这个属性。照常与DMS,它必须被配置为解析VHDL(或Verilog)[此容易,DMS具有完全VHDL,Verilog和SystemVerilog的前端),扫描分析树,找到附加的注释(DMS捕获意见,因为它解析),然后尝试使用DMS的内置“Pattern Parser”解析注释。需要一些计算语法错误的bookeep。所以这是可能的。

我怀疑这不值得。你的正则表达式可能非常好,特别是当人类支持时,如果那个人不介意进行额外的代码审查。

答案 1 :(得分:1)

这是我到目前为止所使用的

egrep  "^\s*--.*[;,]$" *.vhd

即,找到可能有空格的行,然后是文本,并以a结尾;要么 ,。我发现评论中的逗号是正常的但是这两个字符经常被注释掉代码,因为它们经常在VHDL行的末尾使用。

使用@Freddy Mallet在引用的关键字中提出的建议,我想出了这个。我尝试使用英语不常用的VHDL关键字。这往往适用于相同的代码,但在诸如“...的过程”之类的评论中遇到了麻烦。您可能希望使用egrep -f并将regexp放在文件中。

  egrep "^\s*--.*([;,]$|\s(architecture|array|assert|begin|block|case|component|downto|elsif|entity|generate|generic|inout|library|null|package|port|range|records|select|signal|type|until)\s)" src/*.vhd