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-решателю для нахождения удовлетворяющего решения

  • Сведения об авторах: Беляев Михаил Анатольевич, Санкт-Петербургский государственный политехнический университет, аспирант кафедры компьютерных систем и программных технологий; Цесько Вадим Александрович, Санкт-Петербургский государственный политехнический университет, ассистент кафедры компьютерных систем и программных технологий

Read more

Summary

Введение

Статический анализ программного обеспечения это один из основных способов статического предсказания поведения программы при запуске. Описание средства Aegis [4], разрабатываемого лабораторией программно-аппаратных разработок кафедры компьютерных систем и программных технологий СПбГПУ и использующего один из этих подходов (абстрактную интерпретацию), содержит достаточно полный обзор средств на их основе, а также основных алгоритмов и программных моделей. Несмотря на отсутствие поддержки со стороны коммерческих средств, данный подход имеет ряд преимуществ по сравнению с другими в частности, он основан на логическом выводе, а не на анализе потока данных, и использует формальное описание, поэтому возможно формальное доказательство корректности конкретного вида анализа, построенного на основе данного подхода. Языки С и С++, наиболее чувствительные к ошибкам и поэтому наиболее нуждающиеся в анализе, не могут использоваться в качестве входного языка выражений для такого анализа в связи с крайне сложными синтаксисом и семантикой. Поэтому необходимо формировать промежуточное представление на основе исходного кода на этих языках, которое может быть использовано в данном качестве. В разделе 3 описаны основные идеи, лежащие в основе библиотеки анализа

Парсер промежуточного представления LLVM
Разбор формата битового потока
Построение программной модели
Анализ модели
Системы типов и эффектов
Практическое применение
Заключение
Lattner
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call