Для начала обернём вызов анализатора в скрипт (о нём позже) и будем вызывать его как внешнюю утилиту. В конфигурации укажем рабочий каталог:
И включим галочку «Allocate console»:
Недостаток этого способа в том, что вывод не будет разбираться эклипсовским парсером, и его можно будет увидеть только в консоли:
Если такой способ не устраивает, можно встроить проверку во внешнюю утилиту для сборки. Способ годится не для всех проектов, но если он устраивает, то идём в свойства проекта и настраиваем параметры External Builder для текущей конфигурации:
- Выбираем External builder в качестве Build type
- Снимаем галочку с «Use default build command»
- В поле «Build command» вводим наш скрипт
- Отмечаем «Generate Makefiles automatically»
Ключ "-k" Eclipse добавляет сам. Соответственно, при построении проекта наш скрипт будет вызван с ключами "-k all", при очистке — с "-k clean".
В итоге мы получим автоматическую проверку проекта при сборке, плюс вывод, который разбирается Eclipse и, как следствие, навигацию по исходникам в окне «Problems»:
Ну а теперь сам скрипт:
#!/bin/sh
# без аргументов скрипт вызывается как External Tool, принудительно вызываем `make clean`:
if [ -z "$1" ]; then
make -f makefile clean
fi
# вызов из билдера, проверяем цели:
if [ "$2" = "clean" ]; then
make -f makefile clean
# здесь больше ничего делать не надо:
exit
fi
# не clean или вызвали как External Tool - анализируем проект:
TEMPLOG=$(tempfile)
# удаляем ошмётки `strace`, которые могут появиться в некоторых случаях:
pvs-studio-analyzer trace -- make -f makefile all 2>&1 | sed '/strace: umovestr:/d' -
pvs-studio-analyzer analyze -o "$TEMPLOG"
# удаляем непонятную строку, которая у меня появляется в выводе конвертера:
RC=$(plog-converter -t errorfile "$TEMPLOG" | sed '/The documentation for all/d' -)
rm -f "$TEMPLOG"
echo "$RC"
Пока всё. На реальных проектах ещё ничего не гонялось, может там и вылезут какие-то недоделки. Но общая схема в принципе понятна.
Комментарии (16)
ctapmex
02.12.2016 11:04а под windows поддержка gcc будет работать в таком режиме?
SvyatoslavMC
02.12.2016 12:23+1GCC в Windows поддерживается. Инструмента из туториала прям в таком виде в Windows нету.
Но есть 2 возможных варианта завести анализатор:
1. Интегрировать в сборку ядро анализатора.
2. Пользоваться специальной для таких случаев утилитой — Standalone. Отчёт можно просматривать прям там. В Linux такого инструмента пока нет, поэтому результатам анализа важно попасть в IDE.
mrturkisk
02.12.2016 12:41-3Лично мне уже надоели статьи про PVS-Studio.
AllexIn
02.12.2016 12:46+1В ноябре — в среднем раз в 2.5 дней статья. Никаких проблем игнорить статьи нет.
Что вы предлагаете? Убрать с хабра все статьи, которые кому то надоели? Хабра не будет вообще.mrturkisk
02.12.2016 12:49-3Можно, например, делать обзор всех изменений раз в месяц в обзорной статье.
SvyatoslavMC
02.12.2016 13:39AllexIn правильно говорит. Неинтересные статьи надо просто игнорировать.
Я, например, за много лет не открыл ни одну статью про базы данных т.к. не интересуюсь. Следовательно, на этой почве не возникло ни одного конфликта с авторами и их публикациями.mrturkisk
02.12.2016 13:45А если бы Вы встречали через 2.5 дня статью, например, про MySql (одну из многих баз данных), вам бы не показалось это странным?
kloppspb
02.12.2016 13:54+2А чего в это этом странного? Интересует людей mysql — люди пишут про mysql, да хоть по 10 раз в день, имеют право. Не интересует тебя mysql — не читай, тем более что тут есть возможность выбирать что именно показывать в новостной ленте. А ещё лучше — пиши свои статьи, на интересные тебе темы.
SvyatoslavMC
02.12.2016 13:57+3Думаю нет. Точно также вижу каждый день Java где-нибудь, например. Я просто с уважением отношусь к людям из других сообществ и прокручиваю ленту дальше.
Вообще я давно перешёл на просмотр «Всё подряд», потому что материала на хабре и гиктаймс действительно поубавилось в последнее время. Может по этой причине мы стали встречать что-то чаще обычного.
Andrew_Crew_Kuznetsov
02.12.2016 13:13Кому-то будет интересна подобная статья про Anjuta IDE?
Себе настроил, могу рассказать.SvyatoslavMC
02.12.2016 13:33+1Было бы здорово иметь такую статью. Предусмотреть в документации всё сложно. Тем более статью не минусуют, т.к. сделана пользователями для пользователей.
На крайний случай я хотел бы сам увидеть мануал в личке/почте для изучения и обновления документации. Но не вижу ничего плохого в статье.
icoz
04.12.2016 11:42Прикольно. А для sublime?
kloppspb
04.12.2016 15:54Первый способ должен работать в любых редакторах/IDE, которые поддерживают запуск внешних утилит с передачей им каких-то аргументов (то есть если внутри утилиты можно понять что именно собирать и проверять).
Можно ли встроить так, чтобы работала навигация по предупреждениям — надо брать sublime и разбираться. Может придётся подправить формат вывода, может что-то ещё докрутить, не знаю.
mayorovp
То есть теперь отслеживание запуском компилятора называется "встроили в билд"? А ведь еще кто-то возмущался, зачем оно вообще сделано, неудобно же пользоваться…
SvyatoslavMC
Сначала у нас так было для QMake. Позже мы сделали полноценную интеграцию анализатора в проектные файлы QMake и CMake без отслеживания. Думаю, это вопрос времени, разберёмся.