Abstract
The intent of this paper is to describe a static analysis tool under development. The main idea behind the design of this tool is to use type and effect systems for static analysis of real programs. The tool uses LLVM bitcode files as input, thus extending the set of analyzed languages to those supported by LLVM compiler infrastructure. It uses its own parser of bitcode files and a program model similar to that of LLVM. The approach taken is to research feasibility of designing instruments for static analysis by applying known type and effect system based algorithms for detecting defects to LLVM bitcode language and effectively to original source code.
Highlights
Статический анализ программного обеспечения это один из основных способов статического предсказания поведения программы при запуске
Каждое из этих правил может быть использовано как утверждение в рамках задачи SMT и передано SMT-решателю для нахождения удовлетворяющего решения
Сведения об авторах: Беляев Михаил Анатольевич, Санкт-Петербургский государственный политехнический университет, аспирант кафедры компьютерных систем и программных технологий; Цесько Вадим Александрович, Санкт-Петербургский государственный политехнический университет, ассистент кафедры компьютерных систем и программных технологий
Summary
Статический анализ программного обеспечения это один из основных способов статического предсказания поведения программы при запуске. Описание средства Aegis [4], разрабатываемого лабораторией программно-аппаратных разработок кафедры компьютерных систем и программных технологий СПбГПУ и использующего один из этих подходов (абстрактную интерпретацию), содержит достаточно полный обзор средств на их основе, а также основных алгоритмов и программных моделей. Несмотря на отсутствие поддержки со стороны коммерческих средств, данный подход имеет ряд преимуществ по сравнению с другими в частности, он основан на логическом выводе, а не на анализе потока данных, и использует формальное описание, поэтому возможно формальное доказательство корректности конкретного вида анализа, построенного на основе данного подхода. Языки С и С++, наиболее чувствительные к ошибкам и поэтому наиболее нуждающиеся в анализе, не могут использоваться в качестве входного языка выражений для такого анализа в связи с крайне сложными синтаксисом и семантикой. Поэтому необходимо формировать промежуточное представление на основе исходного кода на этих языках, которое может быть использовано в данном качестве. В разделе 3 описаны основные идеи, лежащие в основе библиотеки анализа
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have