Статический программный анализ
-
Основы статического анализа
- Статический анализ — это анализ программ без их выполнения, в отличие от динамического анализа.
- Анализ выполняется автоматизированными инструментами, а человеческий анализ называется «пониманием программы».
- Анализ может выполняться на исходном или объектном коде программы.
-
Сложность и цели анализа
- Сложность анализа варьируется от анализа отдельных операторов до полного исходного кода.
- Анализ используется для выявления ошибок в кодировании и доказательства свойств программ.
- Статический анализ находит применение в критически важных для безопасности системах и в разработке встраиваемого программного обеспечения.
-
Инструменты и методы анализа
- OMG выделяет три уровня анализа программного обеспечения.
- Формальные методы используют строгие математические методы для анализа.
- Абстрактная интерпретация моделирует влияние операторов на абстрактную машину.
- Анализ потока данных и логика Хоара являются формальными методами.
- Существуют инструменты для анализа различных языков программирования.
-
Статический анализ на основе данных
- Статический анализ на основе данных использует большие объемы кода для создания правил кодирования.
- Методы машинного обучения и анализ прошлых исправлений могут использоваться для вывода правил.
-
Рекультивация и дальнейшее чтение
- Статические анализаторы выдают предупреждения, которые могут быть автоматизированы для устранения неполадок.
- В статье также упоминаются другие связанные темы, такие как аудит кода, генерация документации и формальная семантика языков программирования.
Полный текст статьи: