2015-10-30 11 views
0

Я хотел бы изменить CPD, чтобы выплескивать только Found a X line (Y tokens) duplication in the following files: ... при создании отчета, то есть подавлять исходные строки кода. У меня есть/SRC/файлы и попытался изменить SimpleRenderer.java в/SRC/сети/SourceForge/PMD/CPD/закомментировавКак изменить вывод отчета PMD о копировании патча (CPD)

String source = match.getSourceCodeSlice(); 

if (trimLeadingWhitespace) { 
    String[] lines = source.split("[" + PMD.EOL + "]"); 
    int trimDepth = StringUtil.maxCommonLeadingWhitespaceForAll(lines); 
    if (trimDepth > 0) { 
     lines = StringUtil.trimStartOn(lines, trimDepth); 
    } 
    for (int i=0; i<lines.length; i++) { 
     rpt.append(lines[i]).append(PMD.EOL); 
    } 
    return; 
} 

Однако в докладе не изменился. Я немного начинающий Java, поэтому имейте это в виду. Нужно ли мне как-то перестроить pmd-4.2.x в Eclipse?

ответ

1

Существуют различные способы для достижения этой цели:

  1. Без изменения PMD/CPD вообще с помощью задать расширенное. Вы можете, например, постфильтр отчет:

    bin/run.sh cpd --minimum-tokens 100 --files src --encoding UTF-8 \ 
        | egrep "^Found a |^Starting at line " 
    

    Это будет выводить теперь только строки, которые начинаются с «Нашел» или «Начиная с линии».

  2. Изменение PMD/CPD для настройки формата отчета. Тем не менее я хотел бы предложить реализовать этот измененный формат отчета в виде отдельного формата, например. назвав его «text_without_sources», вместо того, чтобы изменять формат по умолчанию. Затем вы вызывают CPD с bin/run.sh cpd --format text_without_sources ....

    В этом случае вам необходимо построить PMD из источников. PMD использует Maven для построения (вы можете использовать eclipse во время разработки, но пакет построен с maven). После mvn clean package в топ-каталоге клонированных источников от https://github.com/pmd/pmd вы найдете двоичный файл в каталоге pmd-dist/target/.

    Посмотрите, как отчеты интегрированы в CPDConfiguration.java - вы можете добавить свою собственную версию SimpleRenderer.

  3. Создать функцию-запрос на https://sourceforge.net/p/pmd/bugs/

+0

Подумав об этом, я бы на самом деле хотел бы выплюнуть данные в виде <количество повторяющихся строк>, изменив формат исходного кода для 'ОФП .append ("") .append (mark.getTokenSrcID()). append (match.getLineCount()). append (PMD.EOL); ', но для этого требуется второй вариант, который вы указали. 'mvn clean package' создает банку 1KB, но я не уверен, как выполнить скрипт cpd run.sh, чтобы он фактически выплевывал этот новый формат. Любая помощь? – mjswartz

+0

Nevermind! Я заработал! Спасибо за вашу помощь! – mjswartz