我正在分析一些遗留代码。它是大约80.000行的旧plsql代码。从第一眼看,源中有一些重复需要删除。而不是做diff的手册并查看每个文件,必须有一些工具/命令行混淆,以检测重复的源代码行。
我的目标是对重写源的最小尺寸以及在此程序中捕获多少实际知识做出有根据的猜测。我写了一些基本的静态代码分析器来查找IF ELSE FOR等控制语句的数量以及每个文件中的函数。 但仍需要从我的统计信息中删除重复的代码。
答案 0 :(得分:3)
你看过Simian - Similarity Analyser了吗? (刚检查过,它不再是免费的,但是为了评估目的,可以使用15天。)
Simian(相似性分析器) 识别Java,C#,C中的重复, C ++,COBOL,Ruby,JSP,ASP,HTML,XML, Visual Basic,Groovy源代码和 甚至纯文本文件。实际上,猿猴 可用于任何人类可读的 文件,如ini文件,部署 描述符,你的名字。
我在实践中使用它并且它确实运作良好。
答案 1 :(得分:0)
Sonar有重复检测并声称支持PL / SQL,但我从未使用它。
答案 2 :(得分:0)
你需要求/借/偷/写一个plsql解析器并比较生成的抽象语法树。根据您拥有的代码库的大小,这可能是值得的。完成后,解析器还有其他用途。
答案 3 :(得分:0)