COBOL克隆检测与ConQAT?

COBOL克隆检测与ConQAT?,cobol,conqat,Cobol,Conqat,ConQAT的文档它可以对COBOL代码进行克隆检测,但是我在文档中找不到任何合适的块 唯一可以考虑的是语句克隆分析,但它会被每行前面的行号弄糊涂: 016300******************************************************************0058 有趣的工具。我快速浏览了一下,在我看来,一个简单的修复方法可能是预处理COBOL源代码,用空格覆盖第1列到第6列,并修剪第72列之后的所有内容 在闲逛了一会儿之后,我偶然发现了一条路。看起来它将

ConQAT的文档它可以对COBOL代码进行克隆检测,但是我在文档中找不到任何合适的块

唯一可以考虑的是
语句克隆分析
,但它会被每行前面的行号弄糊涂:

016300******************************************************************0058

有趣的工具。我快速浏览了一下,在我看来,一个简单的修复方法可能是预处理COBOL源代码,用空格覆盖第1列到第6列,并修剪第72列之后的所有内容

在闲逛了一会儿之后,我偶然发现了一条路。看起来它将“愉快地”从序列号区域以及第72列之后拾取令牌。标记器看起来只在经过编译的库处理阶段(即,在处理诸如COPY/REPLACE之类的编译器指令之后)之后处理COBOL源代码。COPY/REPLACE被指定为关键字,但我真的不知道这个标记器如何正确处理它们——特别是在涉及伪文本的情况下

如果使用IBM COBOL编译器,则可以在编译器上指定MDECK选项以生成适当的源文件进行分析。我不熟悉其他供应商,因此无法进一步评论如何生成post text manipulation源代码组


相对于其他语言(如java),conquat为COBOL提供的克隆检测级别似乎非常有限。我猜想,对于COBOL程序来说,您将不得不花费大量的时间才能从中获得比琐碎的克隆检测更多的东西。然而,考虑到在典型的COBOL程序中大量使用剪切/粘贴编码,这可能是一个非常有用的项目(COBOL程序员经常拿它开玩笑:只编写过一个COBOL程序,其余只是它的修改副本)。我祝你一切顺利。

鉴于ConQat处理COBOL的方式很糟糕,你可以看看我们的工具

它有一个版本,使用精确的解析器显式地与IBM Enterprise COBOL一起工作,并且它正确地处理所有序列号无意义。(它甚至会在其原生ECBDIC中读取COBOL代码,这意味着包含ASCII换行符的文本字符串不会破坏解析器)。 [如果您的COBOL不是IBM COBOL,这不会对您有所帮助,但否则您将不会“花很多时间来获取任何东西”]

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

针对似乎在日本工作的OP:作为奖励,CloneDR处理日语字符集,因为它是在Unicode和Shift-JIS支持的基础上实现的。我们没有太多使用日本COBOL的经验,所以可能还有一个小故障;看