PVS-studio и собственный генератор makefile'ов
От: D_Tony  
Дата: 02.12.16 15:28
Оценка:
Привет!

кто использует это чудо — могут посоветовать КАК можно вписать в самосгенерированный мейк,
в котором создается вот такая простыня:
####### Implicit rules

.SUFFIXES: .c .cpp .cc .cxx

{..\..\obj\base\debug\vs}.cpp{..\..\obj\base\debug\vs\}.obj::
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo..\..\obj\base\debug\vs\ @<<
    $<
<<

{..\..\obj\base\debug\vs}.cc{..\..\obj\base\debug\vs\}.obj::
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo..\..\obj\base\debug\vs\ @<<
    $<
<<

{..\..\obj\base\debug\vs}.cxx{..\..\obj\base\debug\vs\}.obj::
    $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo..\..\obj\base\debug\vs\ @<<
    $<
<<

{..\..\obj\base\debug\vs}.c{..\..\obj\base\debug\vs\}.obj::
    $(CC) -c $(CFLAGS) $(INCPATH) -Fo..\..\obj\base\debug\vs\ @<<
    $<
<<

вместо логичных правил на каждую единицу трансляции раздельно, вызов pvs-studio.exe.

куда и как надо втыкать ТО, о чем идет речь в статье
"Использование режима независимого запуска анализатора на примере Makefile проекта" по пути http://www.viva64.com/ru/m/0006/#ID0ERYBG

Возьмём для примера Makefile проект, в котором сборка осуществляется компилятором Visual C++, и она описана в makefile проекта следующим правилом:

$(CC) $(CFLAGS) $<

Здесь $(CC) вызывает cl.exe, которому передаются параметры компиляции $(CFLAGS), и наконец с помощью макроса $< осуществляется подстановка всех С\С++ файлов,
от которых зависит текущая цель сборки. Т.о. для всех файлов с исходным кодом будет вызван компилятор cl.exe с необходимыми параметрами.

Модифицируем данный сценарий таким образом, чтобы перед вызовом компилятора для каждого файла осуществлялась проверка статическим анализатором PVS-Studio:
$(PVS) --source-file $<  --cl-params $(CFLAGS)  $<
--cfg "C:\CPP\PVS-Studio.cfg"
$(CC) $(CFLAGS) $<


особенно вставляет, что в примере существует явный перевод строки:

$<
--cfg

и зачем он?
Отредактировано 02.12.2016 15:34 D_Tony . Предыдущая версия . Еще …
Отредактировано 02.12.2016 15:33 D_Tony . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.