PHPMD — Проверка на дублированный код

#php #duplicates #software-design #metrics #phpmd

#php #дубликаты #программное обеспечение-дизайн #показатели #phpmd

Вопрос:

Я только что узнал об инструменте PHPMD и заметил, что он действительно полезен, дело в том, что я прочитал документацию о создании пользовательских правил и прочем, но там просто говорится об использовании программных показателей из PHPDepend.

Я хотел бы знать, возможно ли реализовать конкретное правило для проверки на дублированный код?

Я заметил, что я также могу использовать абстрактное синтаксическое дерево определенного узла в моем пользовательском правиле, но, возможно, это мне не очень поможет, верно?

Потому что для проверки на дублированный код мне нужно сравнить несколько разных узлов функции / метода, и метод apply вызывается один раз для каждого узла?

Как я мог бы расширить PHPMD для достижения такого глубокого анализа кода, как этот? Я хочу выйти далеко за рамки программных показателей..

Спасибо!

Комментарии:

1. phpcpd — лучший инструмент для поиска дублированного кода

2. да, я это знаю, но возможно ли достичь этого с помощью PHPMD? и как? поскольку я выполняю магистерскую диссертацию, оцениваю PHPMD и мне нужно сделать некоторые расширения к нему, спасибо! Я пытаюсь избегать других инструментов, особенно потому, что phpcpd предназначен только для этой цели, я ищу универсальные решения для целей обратного проектирования, спасибо!

3. Ну, вы хотите использовать PHPMD для чего-то, для чего он никогда не предназначался; PHPMD написан специально для отчета о программных показателях; это его цель, и добавление пользовательских правил касается правил программных показателей (а не несвязанных функций, таких как копирование / вставка)…. таким образом, на самом деле нет никаких рекомендаций по изменению внутреннего назначения phpmd

4. Лично я мог бы рассмотреть варианты получения выходных данных из двух разных наборов инструментов и объединения их в единый вывод

5. Спасибо за ваш вклад @MarkBaker! Я понимаю, что вы имеете в виду, дайте правильный ответ об использовании той же информации, которую вы предоставили, и я буду рад принять это как ответ 😉