Наверное, нет, но я не эксперт по PMD (и у меня есть своя предвзятость, проверьте мою биографию).
Проблемы:
- Можете ли вы быстро определить синтаксис для моего языка (возможно, в зависимости от того, насколько вы хороши, насколько грязен язык и сила механизма разбора, предлагаемого PMD)
- Можете ли вы определить семантику моего языка так, чтобы "семантические проверки", предоставляемые PMD, работали. Вы должны сделать это, потому что синтаксис говорит вам (и инструмент) буквально ничего о семантике синтаксиса. Я бы предположил, что «семантические проверки» инструмента PMD довольно тесно связаны с точными деталями Java; если бы ваш язык соответствовал java идеально, это было бы нулевой работой. Но это не так, иначе вы бы не задавали вопрос. И различия семантики языка, даже незначительные, вызывают прерывистые изменения в интерпретации кода. Прежде чем вы приступите к выполнению даже «серьезной» семантики, вам, вероятно, придется создать идентификаторы отображения таблицы символов в коде для объявлений (и «семантического» типа) для этих символов. Основываясь на инструментальной инфраструктуре, с которой я работаю, один этот шаг занимает 1-2 месяца для реального языка.
- Наконец, вам, вероятно, придется кодировать специальные проверки PMD, специфичные для вашего языка. Это тоже требует времени и энергии.
Я создаю универсальный механизм типа компилятора (анализаторы, анализаторы потока, средства проверки стиля / ошибок) и мне постоянно задают эквивалент этого вопроса WRT для нашего оборудования. Мы стараемся иметь много доступного оборудования, стараемся упростить интеграцию новых языков, и мы работаем над тем, чтобы сделать это «удобным и быстрым» уже более 15 лет. Это все еще не удобно, и через несколько недель мы не сможем сделать это с нашими инструментами. Я сомневаюсь, что PMD лучше.