Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением (Глеб Моргачев, ISPRASOPEN-2019)

Материал из 0x1.tv

Докладчик
Глеб Моргачев.jpg
Глеб Моргачев

Современные статические анализаторы кода способны обнаружить только узкие классы алгоритмических ошибок, такие как неправильный порядок аргументов функции и неправильное использование скопированных участков кода.

Однако, даже на этих классах процент обнаруженных ошибок мал в силу эвристической природы методов анализа.

В работе предлагается метод обобщения поиска алгоритмических ошибок связанных с использованием неверных переменных на основе применения рекуррентных нейронных сетей к графовому представлению программы. Предложенный метод основан на идее пересылки сообщений по ребрам графа и использует комбинации различных методов для построения графа программы: анализ потоков данных, синтаксический и лексический анализ. Рассмотрено обобщение существующей модели на случай поиска ошибок и представлены правила для принятия решений о верности использования переменной.

Были проведены эксперименты на реальных проектах, в условиях близких к практическому применению в промышленных анализаторах, которые показали, что данный метод анализа может быть успешно использован на практике.


Industrial static analyzers are able to detect only several narrow classes of algorithmic errors, for example actual arguments order swapped with formal parameters, forgotten renaming of variable after copy-paste. However, even for these categories essential part of errors is lost because of heuristical design of a checker. We propose the generalization of specified errors in the form of variable misuse problem and deal with it using machine learning.

The proposed method uses message propagation through the program model represented as a graph, combining data from multiple analysis levels, including AST, dataflow. We introduce several error criteria, which were evaluated on the set of open source projects with millions of LoC. Testing in close to industrial conditions shows good false positive and missed errors ratio comparable with remaining detectors and allows to include developed checker (after a minor rework) into a general purpose production static analyzer for error detection.

Видео

on youtube

Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.

Презентация

Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением.pdf
Обнаружение неправильного использования переменных с использованием статического анализа в сочетании с машинным обучением!.jpg

Примечания и ссылки

Plays:54   Comments:2