Какой инструмент статического анализа для Java проще всего расширить? [закрыто]

StackOverflow https://stackoverflow.com/questions/1036588

Вопрос

Какие инструменты статического анализа для Java имеют самый простой механизм расширения. Я проверил PMD Но процесс написания пользовательских правил кажется очень сложным. В частности, я хочу знать, есть ли какие-нибудь инструменты, предлагающие AspectJ синтаксис для выделения интересных областей кода? Мне известно о AspectJ. объявить предупреждение , но оно может быть ограничено.

Я нашел связанный вопрос:

Рекомендация инструмента статического анализа для Java? Рекомендация инструмента статического анализа для Java?

Ответы перечисляют много инструментов. Но я хочу найти, какой из них предлагает самый простой вариант для написания пользовательских правил.

Edit: . До сих пор предложенные Гийомом выражения PMath для XPath, по-видимому, наиболее близки к тому, что я ищу. Я буду исследовать это в ближайшее время.

Это было полезно?

Решение

Реальная проблема с расширением " инструментом статического анализа является «статический анализ»; это такая широкая тема, что вам нужно много оборудования, чтобы сделать это в целом: синтаксический анализ, построение дерева, извлечение потока управляющего потока, извлечение потока данных, анализ точек, межпроцедурный анализ, анализ диапазона, список можно продолжать и продолжать, посмотрите тонны литературы по компилятору по анализу программ.

Вы можете использовать сопоставление с образцом поверхностного синтаксиса, чтобы сосредоточить внимание инструмента на каком-то программном коде, но вы все равно будете иметь объяснить инструменту, что вы хотите, чтобы он "статически анализировал" в таком случае (и некоторые анализы [например, указывает на) требуют, чтобы вы делали анализ везде сначала, а затем просто выберите ту часть, которую вы хотите).

Мораль : не ожидайте, что расширение инструмента для выполнения произвольного анализа будет простым. Вы должны заранее решить, какие виды анализа вам важны. (испорченные входы? проверки диапазона индекса? злоупотребление API?) и найти инструмент, который уже поддерживает такие вещи. По крайней мере, тогда ваши "расширения" иметь шанс быть простым благодаря тому, что инструмент похож на то, что он уже делает.

Наш набор инструментов для реинжиниринга программного обеспечения DMS - это попытка амортизации затрат на создание всех видов аналитического оборудования для многих приложений и языков. Он обеспечивает анализ, анализ / анализ потока данных и анализ точек в разной степени для C, C ++, Java и COBOL. И это имеет поверхностный синтаксис сопоставление с шаблоном, чтобы помочь вам "указать". См. http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html

scroll top