2012-02-24 77 views

回答

2

有趣的工具。我迅速看了一眼,在我看来,一个简单的修复可能是预处理COBOL源代码,使用空格覆盖第1到第6列,并在第72列后面删除所有内容。

经过一段时间,我偶然发现NextToken scanner definition file for COBOL。它看起来会很高兴地从序列号区域以及列72之后拾取令牌。标记器看起来像只在经过编译的库处理阶段(即编译器之后)才处理COBOL源代码指令如COPY/REPLACE已被处理)。 COPY/REPLACE被指定为关键字,但我真的不知道这个标记器如何正确处理它们 - 尤其是涉及伪文本的地方。

如果使用IBM COBOL编译器,则可以在编译时指定MDECK选项以生成适用于分析的源文件。我对其他供应商不熟悉,所以无法进一步评论如何生成后期文本操作源代码组。

提供COBOL的克隆检测conquat的级别似乎相对于其他语言(例如java)非常有限。我怀疑你必须花费大量的时间才能为COBOL程序获得任何不重要的克隆检测。然而,由于在典型的COBOL程序中大量使用了剪切/粘贴编码,这可能是一个非常有用的项目(COBOL程序员经常开玩笑:COBOL程序只有一次写过,其余的只是它的修改副本) 。祝你顺利。

0

鉴于ConQat与COBOL的交易不好,您可以查看我们的CloneDR工具。

它有一个与IBM Enterprise COBOL一起工作的版本,使用了精确的解析器,并且它能够正确处理所有序列号废话。 (它甚至会读取其本地ECBDIC中的COBOL代码,这意味着包含ASCII换行符的文字字符串不会破坏解析器)。 [如果您的COBOL不是IBM COBOL,这不会对您有所帮助,但否则您将不必“花费大量的时间来获取任何内容”]。

我们认为基于AST的检测技术比ConQat基于令牌的检测更准确地检测到更好的克隆。该网站详细解释了原因,并显示了由CloneDR检测到的示例COBOL克隆。

具体到谁出现在日本进行工作OP:作为奖金,CloneDR处理日文字符集,因为它是对an underlying tool infrastructure上实现的是Unicode和启用按住Shift JIS。我们还没有很多日本COBOL的经验,所以可能还有一个小故障。见G literals with Japanese characters