Статический анализ кода. Методология выявления ошибок в программном коде, основанная на просмотре кода программистом (code review), помеченного статическим анализатором там, где потенциально может находиться ошибка. Другими словам инструмент для статического анализа определяет в тексте программы места, содержащие или потенциально содержащие ошибки, предрасположенные к ошибкам или имеющие плохое форматирование. Такие участки кода предоставляются программисту для изучения, и он может принять решение о модификации данного участка программы.
Статические анализаторы могут быть как общего назначения (например, Microsoft PREFast, Gimpel PC-Lint, Parasoft C++Test), так и специализированными для поиска определенных классов ошибок (например, Chord для верификации параллельных Java программ). Обычно инструменты статического анализа достаточно дороги, требуют знаний о методологии их использования, имеют достаточно сложные подсистемы настройки и подавления ложных сообщений. По этой причине статические анализаторы обычно используются в компаниях с высокой культурой разработки и зрелыми процессами разработки программного обеспечения. Взамен на сложность в использовании, статические анализаторы кода позволяют выявить большое количество ошибок на самых ранних этапах разработки программного кода. Использование методологии статического анализа также дисциплинирует программистов и помогает контролировать работу молодых сотрудников.
Основное преимущество использования статических анализаторов кода состоит в возможности существенной снижении стоимости устранения дефектов в программе. Чем раньше ошибка выявлена, тем меньше стоимость ее исправления. Так согласно данным приведенным в книге Макконнелла "Совершенный Код", исправление ошибки на этапе тестирования обойдется в десять раз дороже, чем на этапе конструирования (кодирования):
Рисунок 1. Средняя стоимость исправления дефектов в зависимости от времени их внесения и обнаружения (данные для таблицы взяты из книги С. Макконнелла "Совершенный Код").
Инструменты статического анализа позволяют выявить большое количество ошибок этапа конструирования, что существенно снижает стоимость разработки всего проекта.
Наша компания "Системы программной верификации" занимается созданием решений в области тестирования и статического анализа кода. Основной продукт нашей компании PVS-Studio представляет собой статический анализатор кода для проверки современных и ресурсоемких приложений.
Анализатор PVS-Studio предназначен для выявления широкого спектра ошибок в программах на языке Си/Си++/Си++11. Помимо диагностик общего назначения, имеются специализированные наборы правил для проверки 64-битных и параллельных OpenMP программ. Анализатор может помочь и в оптимизации кода приложений.
Библиографический список
- Википедия. "Статический анализ кода"
- Википедия. "Список инструментов для статического анализа кода"
- Макконнелл С. Совершенный код. Мастер-класс / Пер. с англ. - М. : Издательско-торговый дом "Русская редакция"; СПб.: Питер, 2005. - 896 стр.: ил. ISBN 5-7502-0064-7.
- By Walter W. Schilling, Jr. and Mansoor Alam. "Integrate static analysis into a software development process".
