PVS-Studio - це інструмент для виявлення помилок і потенційних вразливостей в вихідному коді програм, написаних на мовах С, C ++, C # і Java. Працює в 64-бітних системах на Windows, Linux і macOS і може аналізувати код, призначений для 32-бітових, 64-бітних і вбудованих ARM платформ.
PVS-Studio виконує статичний аналіз коду і генерує звіт, що допомагає програмісту знаходити і усувати помилки. PVS-Studio виконує широкий спектр перевірок коду, але найбільш сильний в пошуках помилок і наслідків невдалого Copy-Paste. Показові приклади таких помилок: V501 , V517 , V522 , V523 , V3001 .
Основна цінність статичного аналізу полягає в його регулярному використанні, завдяки чому багато помилок можуть бути виявлені і усунені на самих ранніх етапах. Немає сенсу витрачати 50 годин на пошук помилки, яку можна знайти завдяки аналізу коду. Але ще раз підкреслимо. Основна користь статичного аналізу не в тому, щоб знайти одну заховану помилку в день перед релізом. А регулярно усувати десятки звичайних помилок день за днем.
Аналізатор може запускатися вночі на сервері і повідомляти про підозрілих місцях в новому коді. В ідеалі помилки взагалі можуть бути виявлені і виправлені ще до потрапляння в систему контролю версій. PVS-Studio може автоматично запускатися відразу після компілятора на тільки що модифікованих файлах. Це працює і в Windows, Linux і macOS.
Швидкий старт в Windows, Linux і macOS
PVS-Studio вміє інтегруватися в середовище розробки Visual Studio 2010-2019. Якщо ви використовуєте цю середу розробки, то швидше за все вам буде досить зайти в меню плагіна PVS-Studio і вибрати команду "перевірити проект".
Часто все йде складніше і може знадобитися інтеграція PVS-Studio в складальну систему, в тому числі і екзотичну. Тема інтеграції занадто велика тема, щоб описати її тут. Всю необхідну інформацію ви можете почерпнути з докладною документації .
Відзначимо тільки, що в PVS-Studio для Windows і Linux передбачені спеціальні утиліти, які збирають інформацію про запуски компілятора. Ці інструменти дозволяють швидко виконати аналіз проекту, що збирається будь-яким способом. Ви можете швидко познайомитися з можливостями аналізатора, не витрачаючи час на його інтеграцію з makefile або складальним скриптом. Див. Опис утиліти C and C ++ Compiler Monitoring (Windows) і pvs-studio-analyzer (Linux / macOS).
використовувані технології
- Зіставлення з шаблоном (pattern-based analysis) на основі абстрактного синтаксичного дерева застосовується для пошуку місць у вихідному коді, які схожі на відомі шаблони коду з помилкою.
- Висновок типів (type inference) на основі семантичної моделі програми дозволяє аналізатору мати повну інформацію про всіх змінних і виразах, що зустрічаються в коді.
- Символьне виконання (symbolic execution) дозволяє обчислювати значення змінних, які можуть призводити до помилок, проводити перевірку діапазонів (range checking) значень.
- Аналіз потоку даних (data-flow analysis) використовується для обчислення обмежень, що накладаються на значення змінних при обробці різних конструкцій мови. Наприклад, які значення може приймати змінна всередині блоків if / else.
- Анотація методів (method annotations) надає більше інформації про використовувані методи, ніж може бути отримано шляхом аналізу тільки їх сигнатури.
Особливості PVS-Studio
- Автоматичний аналіз окремих файлів після їх перекомпіляції.
- Зручна і проста інтеграція з Visual Studio 2010-2019.
- Зручна online-довідка по всім діагностики, яка доступна і з програми, і на сайті, а також документація в .pdf одним файлом. Понад 600 друкованих сторінок документації!
- Збереження і завантаження результатів аналізу: можна вночі перевірити код, зберегти результати, а вранці завантажити їх і дивитися.
- Можливість зберегти результати аналізу в форматі HTML з повною навігацією за кодом.
- Запуск з командного рядка для перевірки всього рішення: дозволяє інтегрувати PVS-Studio в нічні збірки, щоб вранці у всіх був свіжий лог.
- Відмінна масштабованість! Підтримка багатоядерних і багатопроцесорних систем з налаштуванням кількості використовуваних ядер; підтримка IncrediBuild.
- Mark as False Alarm - розмітка в коді, щоб не лаятися конкретної діагностикою в конкретному фрагменті файлу.
- Інтерактивна фільтрація результатів аналізу (балки) у вікні PVS-Studio: за кодом діагностики, по імені файлу, по включенню слова в текст діагностики.
- Утиліта BlameNotifier. Інструмент дозволяє розсилати листи розробникам про помилки, які PVS-Studio знайшов під час нічного прогону.
- Велика кількість варіантів інтеграції в проекти, що розробляються під Linux і macOS.
- Mass Suppression - дозволяє придушити всі старі повідомлення, щоб аналізатор видавав 0 спрацьовувань. До пригніченим повідомленнями завжди можна повернутися пізніше. Можливість безболісно впровадити PVS-Studio в існуючий процес розробки і сфокусуватися на помилках тільки в новому коді.
- Статистика помилок в Excel - можна подивитися темпи правки помилок, кількість помилок в часі і т.п.
- Автоматична перевірка на наявність нових версій PVS-Studio (як при роботі в IDE, так і при нічних збірках).
- Використання відносних шляхів в файлах звіту для можливості перенесення звіту на іншу машину.
- Відстеження компіляції (Compiler Monitoring) - перевірка проектів, у яких немає файлів Visual Studio (.sln / .vcxproj), без необхідності проводити інтеграцію з складальної системою; при необхідності, можна провести пряму інтеграцію аналізатора в будь-яку складальну систему.
- pvs-studio-analyzer - утиліта для відстеження компіляції (Compiler Monitoring) на Linux.
- Можливість виключити з аналізу файли по імені, папці або масці; можливість перевіряти файли, модифіковані за останні N днів.
- Інтеграція з SonarQube. Це відкрита платформа для забезпечення безперервного контролю якості вихідного коду.
Мови і компілятори
- Windows. Visual Studio 2010-2019 C, C ++, C ++ / CLI, C ++ / CX (WinRT), C #
- Windows. IAR Embedded Workbench, C / C ++ Compiler for ARM C, C ++
- Windows / Linux. Keil μVision, DS-MDK, ARM Compiler 5/6 C, C ++
- Windows / Linux. Texas Instruments Code Composer Studio, ARM Code Generation Tools C, C ++
- Windows / Linux / macOS. GNU Arm Embedded Toolchain, Arm Embedded GCC compiler, C, C ++
- Windows / Linux / macOS. Clang C, C ++
- Linux / macOS. GCC C, C ++
- Windows. MinGW C, C ++
- Windows / Linux / macOS. Java
Клієнти PVS-Studio
Зацікавилися? Ось що далі:
скачайте PVS-Studio.
- Перевірте свій проект.
- Випишіть цікаві помилки, підготуйте презентацію.
- Покажіть колегам і начальству.