Обнаружение клона COBOL с ConQAT? - PullRequest
1 голос
/ 24 февраля 2012

Документ ConQAT заявляет , что он может обнаружить клон по коду COBOL, но я не могу найти подходящий блок в списке Включенных блоков .

Единственное, что может быть рассмотрено, это StatementCloneAnalysis, но оно будет сбито с толку номерами строк, которые предшествуют каждой строке:

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

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Интересный инструмент.Я бросил быстрый взгляд, и мне кажется, что простым решением может быть предварительная обработка исходного кода COBOL, чтобы перезаписать столбцы с 1 по 6 пробелами и обрезать все после столбца 72.

Пройдя некоторое время, янаткнулся на файл определения сканера NextToken для COBOL .Похоже, что он «с радостью» подберет токены из области порядкового номера, а также после столбца 72. Токенайзер выглядит так, как будто он имеет дело только с исходным кодом COBOL после того, как он прошел фазу обработки библиотеки компиляции (т.е. после компиляторатакие директивы, как COPY / REPLACE были обработаны).COPY / REPLACE были заданы в качестве ключевых слов, но я действительно не понимаю, как этот токенизатор будет правильно с ними обращаться, особенно когда речь идет о псевдотексте.

При работе с компилятором IBM COBOL вы можете указать опцию MDECKна компиляции, чтобы создать подходящий исходный файл для анализа.Я не знаком с другими поставщиками, поэтому не могу прокомментировать, как сгенерировать исходную колоду для манипулирования текстом.

Уровень обнаружения клонов для COBOL очень ограничен по сравнению с другими языками (например, Java).).Я подозреваю, что вам придется потратить много часов, чтобы получить что-то большее, чем простое обнаружение клонов для программ на языке COBOL.Однако это может быть очень полезным проектом, учитывая интенсивное использование вырезания / вставки кодирования в типичных программах на языке COBOL (программисты на языке COBOL часто шутят из этого: когда-либо была написана только одна программа на языке COBOL, остальные - просто ее модифицированные копии),Я желаю вам всего хорошего.

0 голосов
/ 26 июня 2012

Учитывая, что ConQat плохо работает с COBOL, вы можете взглянуть на наш CloneDR инструмент.

У него есть версия, которая явно работает с IBM Enterprise COBOL с использованием точного парсера, и онобрабатывает всю эту чепуху с порядковым номером правильно.(Он даже будет читать код COBOL в своем родном ECBDIC, что означает, что литеральная строка, содержащая символ новой строки ASCII, не нарушает анализатор).[Если ваш COBOL не IBM COBOL, это вам не поможет, но в противном случае вам не нужно «тратить много часов, чтобы что-то получить»].

Мы думаем, что обнаружение на основе ASTТехника обнаруживает лучшие клоны более точно, чем обнаружение на основе токенов ConQat.Сайт подробно объясняет, почему, и показывает примеры клонов COBOL, обнаруженных CloneDR.

Специально для OP, который, кажется, работает в Японии: в качестве бонуса, CloneDR обрабатывает наборы японских символов, потому что он реализован поверх базовая инструментальная инфраструктура , которая поддерживает Unicode и Shift-JIS.У нас не было большого опыта работы с японским COBOL, поэтому, возможно, остался один глюк;см. G литералы с японскими символами .

...