SlideShare a Scribd company logo
1 of 12
Download to read offline
XLVI научная и учебно-методическая
Конференция Университета ИТМО
«Сравнение систем статического анализа
Python-кода»
Припадчев Артём Александрович
artem.pripadchev@outlook.com
github.com/IPMITMO/statan
Научный руководитель: Радченко Ирина Алексеевна
Санкт-Петербург, 2017
Кафедра информатики и прикладной математики
2 из 11
Статический анализ кода
Анализ программного обеспечения, производимый без
реального выполнения исследуемых программ.
Задачи, решаемые программами статического анализа кода:
Выявление ошибок в программах
Рекомендации по оформлению кода
Подсчет метрик ПО
3 из 11
Система статического анализа кода
Инструмент для аудита кода, включающий в себя ряд
анализаторов, позволяющий:
Запускать анализ всего проекта или его части
Исключать определенные ошибки
Выбирать анализаторы и указывать их настройки
Выборочно игнорировать строки кода
Сохранять конфигурацию в файл
4 из 11
Статистика GitHub по статическим анализаторам
кода Python
Name
GitHub
watchers
GitHub
stars
GitHub
forks
GitHub
issues
GitHub
commits
GitHub
last
commit
pylint 34 483 110 230/884 3190 29.01.17
pycodestyle 109 2068 430 63/316 998 28.01.17
pyflakes 24 364 51 - 388 22.01.17
Coala 64 1048 449 349/1519 3615 27.01.17
Pylama 13 257 36 22/28 421 26.12.16
Flake8 18 155 32 35/265 1281 28.01.17
5 из 11
Coala
Coala (http://coala.io) – инструмент для
контроля стиля и исправления кода независимо
от языка программирования. Поддерживает
C/C++, Python, JavaScript, CSS, Java и множество
других языков
Pylama
Pylama (https://pylama.readthedocs.io) –
инструмент для аудита кода Python и JavaScript.
Включает в себя следующие утилиты:
pycodestyle, pydocstyle, PyFlakes, Mccabe, Pylint,
Radon, gjslint
6 из 11
Общий процесс работы Coala
7 из 11
Общий процесс работы Pylama
8 из 11
Тестирование производительности
Конфигурация VM:
• Ubuntu Server 14.04 LTS
• RAM: 3072 Mb
• CPUs: 3
Среднее время анализа
исходного кода проекта requests-2.12.1
Coala (PyLintBear, PyUnusedCodeBear): 112.11 с
Pylama (pylint, pyflakes): 183.28 c
9 из 11
Использование памяти
0
100
200
300
400
500
600
700
800
0
4
8
12
16
20
24
28
32
36
40
44
48
52
56
60
64
68
72
76
80
84
88
92
96
100
104
108
112
116
120
124
128
132
136
140
144
148
152
156
160
164
168
172
176
180
184
188
192
196
200
204
Usedmemory,Mb
Time, sec
Memory usage
Coala Pylama
10 из 11
Ошибки в Pylama, обнаруженные Coala
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
W0212
C0301
W1505
R0204
W0612
W0622
R0912
W0201
W1202
UnusedCode
C0413
E0101
W0611
C0305
W0231
W0621
R0914
W0703
C0411
C0330
E0602
11 из 11
Ошибки в Coala, обнаруженные Pylama
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
W0611
C0330
C0411
W0212
W1401
W0612
W0201
W0102
R0914
E0213
W1202
E0601
W0621
W0231
R0204
R0911
R0912
W0702
E0611
C0413
R0201
E1128
E0102
W0404
C0412
W0223
R0916
E0202
W0703
C0123
XLVI научная и учебно-методическая
Конференция Университета ИТМО
«Сравнение систем статического анализа
Python-кода»
Припадчев Артём Александрович
artem.pripadchev@outlook.com
github.com/IPMITMO/statan
Научный руководитель: Радченко Ирина Алексеевна
Санкт-Петербург, 2017
Кафедра информатики и прикладной математики

More Related Content

What's hot

Проектирование систем связи
Проектирование систем связиПроектирование систем связи
Проектирование систем связиMATLAB
 
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
Go в продакшене Яндекса: отчёт после года использования — Вячеслав БахмутовGo в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
Go в продакшене Яндекса: отчёт после года использования — Вячеслав БахмутовYandex
 
Node.js (Андрей Костенко)
Node.js   (Андрей Костенко)Node.js   (Андрей Костенко)
Node.js (Андрей Костенко)Ontico
 
Развертывание алгоритмов на ПЛИС
Развертывание алгоритмов на ПЛИСРазвертывание алгоритмов на ПЛИС
Развертывание алгоритмов на ПЛИСMATLAB
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Mail.ru Group
 
Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех Minsk Linux User Group
 
Использование MATLAB совместно с приборами Keysight Technologies
Использование MATLAB совместно с приборами Keysight TechnologiesИспользование MATLAB совместно с приборами Keysight Technologies
Использование MATLAB совместно с приборами Keysight TechnologiesMATLAB
 
Быстрое прототипирование алгоритмов управления
Быстрое прототипирование алгоритмов управленияБыстрое прототипирование алгоритмов управления
Быстрое прототипирование алгоритмов управленияMATLAB
 

What's hot (10)

Проектирование систем связи
Проектирование систем связиПроектирование систем связи
Проектирование систем связи
 
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
Go в продакшене Яндекса: отчёт после года использования — Вячеслав БахмутовGo в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
 
Node.js (Андрей Костенко)
Node.js   (Андрей Костенко)Node.js   (Андрей Костенко)
Node.js (Андрей Костенко)
 
04.01 gpfix GeoTracker
04.01 gpfix GeoTracker04.01 gpfix GeoTracker
04.01 gpfix GeoTracker
 
Развертывание алгоритмов на ПЛИС
Развертывание алгоритмов на ПЛИСРазвертывание алгоритмов на ПЛИС
Развертывание алгоритмов на ПЛИС
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
 
Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех Ян Габис - RobotFramework: автоматизированое тестирование для всех
Ян Габис - RobotFramework: автоматизированое тестирование для всех
 
Использование MATLAB совместно с приборами Keysight Technologies
Использование MATLAB совместно с приборами Keysight TechnologiesИспользование MATLAB совместно с приборами Keysight Technologies
Использование MATLAB совместно с приборами Keysight Technologies
 
Быстрое прототипирование алгоритмов управления
Быстрое прототипирование алгоритмов управленияБыстрое прототипирование алгоритмов управления
Быстрое прототипирование алгоритмов управления
 

Viewers also liked

Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a
Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo aEvangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a
Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo aPadre Enrique Camargo
 
Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a.
Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a.Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a.
Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a.Padre Enrique Camargo
 
Jesús y su vida pública
Jesús y su vida públicaJesús y su vida pública
Jesús y su vida públicamarinatoste
 
Pentecostés (4)
Pentecostés (4)Pentecostés (4)
Pentecostés (4)marinatoste
 
Las religiones monote_stas
Las religiones monote_stasLas religiones monote_stas
Las religiones monote_stasmarinatoste
 
La millor Consola
La millor Consola La millor Consola
La millor Consola Miki Flores
 
Philosophy_of_the_arts_an_introdu
Philosophy_of_the_arts_an_introduPhilosophy_of_the_arts_an_introdu
Philosophy_of_the_arts_an_introduLenny_93
 
Los encuentros del maestro
Los encuentros del maestroLos encuentros del maestro
Los encuentros del maestromarinatoste
 
Derecho a la vida
Derecho a la vidaDerecho a la vida
Derecho a la vidamarinatoste
 
La vida pública de Jesús
La vida pública de JesúsLa vida pública de Jesús
La vida pública de Jesúsmarinatoste
 
El regalo de la vida tema 1
El regalo de la vida tema 1El regalo de la vida tema 1
El regalo de la vida tema 1marinatoste
 
El regalo de la vida tema 1
El regalo de la vida tema 1El regalo de la vida tema 1
El regalo de la vida tema 1marinatoste
 
Pentecostés (6)
Pentecostés (6)Pentecostés (6)
Pentecostés (6)marinatoste
 

Viewers also liked (20)

Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a
Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo aEvangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a
Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a
 
Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a.
Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a.Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a.
Evangelio del Domingo. Domingo 3 del tiempo ordinario ciclo a.
 
ITGM #9
ITGM #9ITGM #9
ITGM #9
 
Diapos proyectos
Diapos proyectosDiapos proyectos
Diapos proyectos
 
Jesús y su vida pública
Jesús y su vida públicaJesús y su vida pública
Jesús y su vida pública
 
Islam B
Islam BIslam B
Islam B
 
El cristianismo
El cristianismoEl cristianismo
El cristianismo
 
Pentecostés (4)
Pentecostés (4)Pentecostés (4)
Pentecostés (4)
 
Las religiones monote_stas
Las religiones monote_stasLas religiones monote_stas
Las religiones monote_stas
 
La millor Consola
La millor Consola La millor Consola
La millor Consola
 
Philosophy_of_the_arts_an_introdu
Philosophy_of_the_arts_an_introduPhilosophy_of_the_arts_an_introdu
Philosophy_of_the_arts_an_introdu
 
Los encuentros del maestro
Los encuentros del maestroLos encuentros del maestro
Los encuentros del maestro
 
AGM presentation v3
AGM presentation v3AGM presentation v3
AGM presentation v3
 
Carla sexto a
Carla sexto aCarla sexto a
Carla sexto a
 
Derecho a la vida
Derecho a la vidaDerecho a la vida
Derecho a la vida
 
La vida pública de Jesús
La vida pública de JesúsLa vida pública de Jesús
La vida pública de Jesús
 
El regalo de la vida tema 1
El regalo de la vida tema 1El regalo de la vida tema 1
El regalo de la vida tema 1
 
El regalo de la vida tema 1
El regalo de la vida tema 1El regalo de la vida tema 1
El regalo de la vida tema 1
 
Pentecostés (6)
Pentecostés (6)Pentecostés (6)
Pentecostés (6)
 
GuiaRapida Harbringers
GuiaRapida HarbringersGuiaRapida Harbringers
GuiaRapida Harbringers
 

Similar to Сравнение систем статического анализа Python-кода

6 кареев киров
6 кареев киров6 кареев киров
6 кареев кировqasib
 
Александр Баяндин
Александр БаяндинАлександр Баяндин
Александр БаяндинCodeFest
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаTatyanazaxarova
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusCisco Russia
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораSQALab
 
IntelliJ IDEA: architecture, performance, development process
IntelliJ IDEA: architecture, performance, development processIntelliJ IDEA: architecture, performance, development process
IntelliJ IDEA: architecture, performance, development processchashnikov
 
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....HOWWEDOIT
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.Igor Shkulipa
 
Перспективные исследования и технологии
Перспективные исследования и технологииПерспективные исследования и технологии
Перспективные исследования и технологииAncud Ltd.
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularizationIvan Krylov
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Ontico
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и DjangoTaras Lyapun
 
IoT Protocols #iotconfua
IoT Protocols #iotconfuaIoT Protocols #iotconfua
IoT Protocols #iotconfuaAndy Shutka
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаRoman Dvornov
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кодаSergii Shmarkatiuk
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в ЯндексеAndrey Kazarinov
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandexaviatakz
 
Стек протоколов для IoT. Пример использования SNMP
Стек протоколов для IoT. Пример использования SNMPСтек протоколов для IoT. Пример использования SNMP
Стек протоколов для IoT. Пример использования SNMPIntersog
 
КГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 2: Обеспечение Качества Программного ОбеспеченияКГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 2: Обеспечение Качества Программного ОбеспеченияIosif Itkin
 

Similar to Сравнение систем статического анализа Python-кода (20)

6 кареев киров
6 кареев киров6 кареев киров
6 кареев киров
 
Александр Баяндин
Александр БаяндинАлександр Баяндин
Александр Баяндин
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кода
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco Nexus
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
IntelliJ IDEA: architecture, performance, development process
IntelliJ IDEA: architecture, performance, development processIntelliJ IDEA: architecture, performance, development process
IntelliJ IDEA: architecture, performance, development process
 
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.
 
Перспективные исследования и технологии
Перспективные исследования и технологииПерспективные исследования и технологии
Перспективные исследования и технологии
 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и Django
 
IoT Conf UA 2016
IoT Conf UA 2016IoT Conf UA 2016
IoT Conf UA 2016
 
IoT Protocols #iotconfua
IoT Protocols #iotconfuaIoT Protocols #iotconfua
IoT Protocols #iotconfua
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
 
Стек протоколов для IoT. Пример использования SNMP
Стек протоколов для IoT. Пример использования SNMPСтек протоколов для IoT. Пример использования SNMP
Стек протоколов для IoT. Пример использования SNMP
 
КГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 2: Обеспечение Качества Программного ОбеспеченияКГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 2: Обеспечение Качества Программного Обеспечения
 

Сравнение систем статического анализа Python-кода

  • 1. XLVI научная и учебно-методическая Конференция Университета ИТМО «Сравнение систем статического анализа Python-кода» Припадчев Артём Александрович artem.pripadchev@outlook.com github.com/IPMITMO/statan Научный руководитель: Радченко Ирина Алексеевна Санкт-Петербург, 2017 Кафедра информатики и прикладной математики
  • 2. 2 из 11 Статический анализ кода Анализ программного обеспечения, производимый без реального выполнения исследуемых программ. Задачи, решаемые программами статического анализа кода: Выявление ошибок в программах Рекомендации по оформлению кода Подсчет метрик ПО
  • 3. 3 из 11 Система статического анализа кода Инструмент для аудита кода, включающий в себя ряд анализаторов, позволяющий: Запускать анализ всего проекта или его части Исключать определенные ошибки Выбирать анализаторы и указывать их настройки Выборочно игнорировать строки кода Сохранять конфигурацию в файл
  • 4. 4 из 11 Статистика GitHub по статическим анализаторам кода Python Name GitHub watchers GitHub stars GitHub forks GitHub issues GitHub commits GitHub last commit pylint 34 483 110 230/884 3190 29.01.17 pycodestyle 109 2068 430 63/316 998 28.01.17 pyflakes 24 364 51 - 388 22.01.17 Coala 64 1048 449 349/1519 3615 27.01.17 Pylama 13 257 36 22/28 421 26.12.16 Flake8 18 155 32 35/265 1281 28.01.17
  • 5. 5 из 11 Coala Coala (http://coala.io) – инструмент для контроля стиля и исправления кода независимо от языка программирования. Поддерживает C/C++, Python, JavaScript, CSS, Java и множество других языков Pylama Pylama (https://pylama.readthedocs.io) – инструмент для аудита кода Python и JavaScript. Включает в себя следующие утилиты: pycodestyle, pydocstyle, PyFlakes, Mccabe, Pylint, Radon, gjslint
  • 6. 6 из 11 Общий процесс работы Coala
  • 7. 7 из 11 Общий процесс работы Pylama
  • 8. 8 из 11 Тестирование производительности Конфигурация VM: • Ubuntu Server 14.04 LTS • RAM: 3072 Mb • CPUs: 3 Среднее время анализа исходного кода проекта requests-2.12.1 Coala (PyLintBear, PyUnusedCodeBear): 112.11 с Pylama (pylint, pyflakes): 183.28 c
  • 9. 9 из 11 Использование памяти 0 100 200 300 400 500 600 700 800 0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120 124 128 132 136 140 144 148 152 156 160 164 168 172 176 180 184 188 192 196 200 204 Usedmemory,Mb Time, sec Memory usage Coala Pylama
  • 10. 10 из 11 Ошибки в Pylama, обнаруженные Coala 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 W0212 C0301 W1505 R0204 W0612 W0622 R0912 W0201 W1202 UnusedCode C0413 E0101 W0611 C0305 W0231 W0621 R0914 W0703 C0411 C0330 E0602
  • 11. 11 из 11 Ошибки в Coala, обнаруженные Pylama 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 W0611 C0330 C0411 W0212 W1401 W0612 W0201 W0102 R0914 E0213 W1202 E0601 W0621 W0231 R0204 R0911 R0912 W0702 E0611 C0413 R0201 E1128 E0102 W0404 C0412 W0223 R0916 E0202 W0703 C0123
  • 12. XLVI научная и учебно-методическая Конференция Университета ИТМО «Сравнение систем статического анализа Python-кода» Припадчев Артём Александрович artem.pripadchev@outlook.com github.com/IPMITMO/statan Научный руководитель: Радченко Ирина Алексеевна Санкт-Петербург, 2017 Кафедра информатики и прикладной математики