В проектах IDE NetBeans и Eclipse JDT имеется значительная логика анализа / генерации кода Java. Я не знаю, каковы их зависимости (то есть можете ли вы использовать их как отдельные библиотеки), но в остальном я бы внимательно рассмотрел эти две: маловероятно, что библиотека анализа кода Java находится в более интенсивной разработке и многое другое. своевременно.
Обновление:
PMD также может быть интересным:
PMD сканирует исходный код Java и ищет потенциальные проблемы, например:
* Возможные ошибки - пустые операторы try / catch / finally / switch * Мертвый код - неиспользуемые локальные переменные, параметры и частные методы * Субоптимальный код - расточительное использование String / StringBuffer * Слишком сложные выражения - ненужные операторы if, для циклов, которые могут быть циклы * Дублированный код - скопированный / вставленный код означает скопированные / вставленные ошибки
Кроме того, в этой записи блога обсуждаются различные инструменты статического анализа кода.
Если вам нужно только сгенерировать синтаксически правильный код Java, проверьте Codemodel .
В итоге я использовал PMD. Пример кода можно увидеть ниже:
final Java15Parser parser = new Java15Parser();
final FileInputStream stream = new FileInputStream("VehicleServiceType.java");
final Object c = parser.parse(new InputStreamReader(stream));
final XPath xpath = new BaseXPath("//TypeDeclaration/Annotation/NormalAnnotation[Name/@Image = 'WebService']",
new DocumentNavigator());
for (final Iterator iter = xpath.selectNodes(c).iterator(); iter.hasNext();) {
final Object obj = iter.next();
// Do code generation based on annotations...
}