#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! Я понимаю, что вы имеете в виду, дайте правильный ответ об использовании той же информации, которую вы предоставили, и я буду рад принять это как ответ 😉