Поймать трассировку стека от вызова Javac - PullRequest
0 голосов
/ 15 апреля 2011

Я хочу сделать что-то немного, ну, интересно, я думаю, было бы хорошим словом. Мне было интересно, есть ли способ получить текст, связанный с трассировкой стека, из сборки (в настоящее время я использую ANT для сборки) с помощью задачи javac.

Небольшая история. Я использую CI-сервер CruiseControl и хочу написать адаптер, который будет отслеживать трассировку стека после неудачной сборки, и позволить мне разобрать, какие файлы вызвали сбой сборки из javac. вызов задачи. Так, например, если код был добавлен в репозиторий, в котором была подпись метода из другого класса, но этот класс никогда не был добавлен в репозиторий, задача javac завершится ошибкой с исключением символа в классе. Я хочу иметь возможность прочитать трассировку стека, чтобы получить класс, вызвавший сбой сборки.

Есть идеи, как это сделать? Я бы предпочел не просто читать файл журнала и анализировать его вручную (я чувствую, что должен быть лучший способ), но если нет, то я тоже могу просто пойти по этому пути.

1 Ответ

0 голосов
/ 17 апреля 2011

Во-первых, для терминологии: компилятор обычно не генерирует исключения (если это происходит, вероятно, есть ошибка в компиляторе, или ваша файловая система создает проблемы, или что-то вроде этого), поэтому нет трассировки стека.

При компиляции вы видите вывод компилятора, включая любые сообщения об ошибках компилятора.

Если посмотреть на задачу ant javac, кажется, что нет способа перенаправить вывод куда-то, что означает синтаксический анализэто возможно только путем анализа выходных данных всего запуска муравья.

Вы могли бы добиться большего успеха, используя API компилятора (javax.tools) и добавив DiagnosticListener к запуску компилятора.Вы бы сами завернули это в задачу муравья.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...