От мазето на тайната лаборатория на разработчиците на PVS-Studio…, phpBB Developer Blog
Като цяло, как изглежда перфектният анализатор на статичен код за потребителя (във вакуум или не)? Струва ми се, въз основа на моя опит в тази област, че перфектният анализатор трябва да изглежда така. Потребителят изтегля помощната програма, стартира я, посочва папката с кода и натиска огромния зелен бутон: „Откриване на всички грешки!“. Без персонализиране, без „интегриране на план“. потребителят на чай не е необходим? Да, не е необходимо. Но е необходимо за анализатора на кода, за съжаление. Като минимум е необходима информация за #include и #define, ако говорим за C. Това е необходимо, за да се извърши предварителна обработка на кода.
И тук стигаме до необходимостта да изберем една от опциите:
- Или инструментът трябва да извлече тази информация от самия файл на плана (както правят нашите добавки за Visual C и C Builder).
- Или инструментът може да получи тази информация, ако му бъде предадена в Makefile (както работи нашата версия на командния ред).
- Или инструментът принуждава потребителя старателно да влиза във всички папки за #include и #define параметри, което е почти немислимо, т.к. За потребителя е изключително трудно да направи това.
- Или ... измислете някакъв друг вариант.
Поехме по четвъртия път и решихме да опитаме това. Но какво ще стане, ако анализаторът получи като първоначална информация не обикновени източници под формата на .cpp файлове, а по-скоро предварително обработени файлове. Тези. файлове, които се обработват от препроцесора. Това ще ни спести необходимостта да извикваме препроцесора и съответно да знаем тези #include и #define.
Разбира се, това е малко по-различно от идеалната версия на анализатора, описана по-горе. Но от друга страна, позволява използването на PVS-Студио за практически всеки C/C план, без значение в каква среда за разработка го изпълнявате.
Оказва се, че инструментът, който се разработва в тайните лаборатории на нашия екип, изглежда по следния начин:

Първо посочваме папката, където се намират предварително обработените .i файлове. Те ще бъдат изследвани от нашия инструмент.
Второ, посочваме папката източник. Това е необходимо, за да се идентифицират грешките по-правилно. В допълнение, неизменно е по-добре (по-късно) да навигирате в дефинирани от потребителя .cpp файлове, а не в .i-файлове, които изобщо не са разбираеми за хората.
Трето, посочваме папката, в която се намират системните включени файлове. Най-основното, така да се каже. За какво? Така че анализаторът да знае, че тук са файловете, за които не е необходимо да се издават диагностични съобщения.
Оказва се, че можем да „захраним“ предварително обработените файлове на тази програма и след това да стартираме анализатора върху тях. Ето как тестваме плана Boost в реално време. Между другото, скоро ще има доклад за преглед на Boost - абонирайте се за нашия блог, за да не го пропуснете. След проверка на файловете получаваме списък с диагностични съобщения като този:

Разбира се, тази публикация не включва пълноценно представяне на новата ни тайна помощна програма. Мога обаче да отговоря по-подробно на няколко въпроса.
Кой НЕ се нуждае от тази помощна програма? Тези, които могат лесно да проверят своя план в PVS-Studio с поддръжка за интеграция в Visual Studio и C Builder. Кой се нуждае от тази помощна програма? За тези, които искат да проверят кода си с поддръжка на PVS-Studio и да използват други среди за разработка и/или файлове на проекти, които са трудни завградете нашата помощна програма за команден ред.
Какво бихте искали да видите такава помощна програма? Удобен ли сте с режима на проверка чрез готови предварително обработени файлове? Какво липсва в такава помощна програма? Трябва ли да го пуснем или да изоставим последващото разработване на тази помощна програма, тъй като всички са доволни от нашата интеграция в среди на Microsoft / Embarcadero?