SlideShare a Scribd company logo
Что DevOps
должен знать про
статический
анализ кода?
Евгений Рыжков, PVS-Studio
Кто я?
• Евгений Рыжков – руководитель и
сооснователь PVS-Studio;
• Год основания компании: 2008;
• Офис - г. Тула (200 км от Москвы),
штат 30 человек;
• PVS-Studio – статический
анализатор кода для C, C++, C# и
Java на Windows, Linux и macOS
• «CEO? А давно ли CEO
программировал?»
Ни слова про PVS-Studio больше…
Содержание
• Причины неудач внедрений.
• Место статического анализа в DevOps-процессе.
• Статический анализ – друг или враг.
• Рассылка результатов анализа.
• Что делать с 10 000 сообщений от анализатора при первом запуске?
• Сколько времени нужно для правки всех ошибок?
• Q&A, или что дальше?
Что такое статический анализ кода?
.. и как про него рассказывают на конференциях.
Причины неудач внедрений
• Технические.
• Технические.
• Технические.
• Организационные.
Место статического анализа в
DevOps-процессе
• Егор Бугаенко. Главное не качество, а количество!
• Automated Build
• Unit Tests
• Test Coverage
• Mutation Coverage
• Static Analysis
• Code Reviews
• Read-Only Master
Видео доклада на DevOpsConf Moscow 2018:
https://devopsconf.io/moscow/2018/abstracts/3723
Статический анализ – друг или
враг (когда, как и почему)
• Как избежать позора?
• В зависимости от того, где и как внедрен инструмент люди к нему
относятся по-разному. И это не зависит от языка разработки.
• Ошибка найдена по месту и тут же исправлена? Отлично, я молодец!
• Ошибка найдена на билд-сервере? Все видят мой фейл, давайте
вырубим этот анализатор!
Рассылка результатов статического
анализа (всем или не всем)
• Очевидные плюсы и неочевидные минусы.
• У программиста завтра есть более важные дела, чем правка
сегодняшней ошибки. И они действительно более важные в какой-то
момент, а потом забывается.
Кого еще добавлять в рассылку
• Бывает нужно ставить в копию письма начальника (так себе конечно);
• Неплохая идея добавлять в копию коллег для обучения;
• Тим-лида в копию, чтобы был в курсе о правке багов – нормально.
Что делать с 10 000 сообщений от
анализатора при первом запуске?
•НИ-ЧЕ-ГО!
Сколько времени нужно
для правки всех ошибок?
• Ожидания • Реальность
0
5
10
15
20
25
1 2 3 4 5
Warnings
0
5
10
15
20
25
1 2 3 4 5
Warnings
Так сколько нужно времени?
• Проект 10 млн строк кода
• 5 тысяч срабатываний анализатора
• Команда: 3-4 человека
• Время правки 3-4 месяца
• Общие трудозатраты: 10-15 человеко-месяцев
• Почему нельзя использовать эти данные для оценки :-)
Заключение
• Статический анализ – это процесс не только технический, но и прежде
всего организационный.
• Эффективность внедрения и использования статического анализа
зависит от правильного выстраивания процессов.
• Ответственным за правильный процесс должен быть менеджер (тим-
лид, PM, CTO), но DevOps должен понимать суть процесса и
подсказывать менеджеру, если тот не понимает что-то.
• Хорошо себя зарекомендовала практика найти в компании энтузиаста
этой технологии, который будет ее продвигать.
Q&A, или что дальше
• Скачайте анализатор, поиграйтесь с ним.
• Обучите коллег, внедрите в своей проект.
• Получите повышение и бонус за внедрение современных практик. :-)
Главная мысль, которую вы должны вынести из доклада:
• Статический анализ в ближайшие несколько лет будет как юнит-тесты
или системы контроля версий. Раньше жили и без них, но «так жить
нельзя».

More Related Content

What's hot

Виталий Стрелюк
Виталий СтрелюкВиталий Стрелюк
Виталий Стрелюк
SQALab
 
Sq adays 2010_balashenko
Sq adays 2010_balashenkoSq adays 2010_balashenko
Sq adays 2010_balashenkoAlexei Lupan
 
Оценка проектов тестирования
Оценка проектов тестированияОценка проектов тестирования
Оценка проектов тестирования
Rina Uzhevko
 
Переписать нельзя рефакторить
Переписать нельзя рефакторитьПереписать нельзя рефакторить
Переписать нельзя рефакторить
CEE-SEC(R)
 
Serious+performance+testing
Serious+performance+testingSerious+performance+testing
Serious+performance+testingAlexei Lupan
 
Нагрузка и автоматизация в большой организации. Движение к DevOps
Нагрузка и автоматизация в большой организации. Движение к DevOpsНагрузка и автоматизация в большой организации. Движение к DevOps
Нагрузка и автоматизация в большой организации. Движение к DevOps
SQALab
 
Шаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптовШаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптов
SQALab
 
ROCS 2 - advanced platform for automated test execution in clustered environm...
ROCS 2 - advanced platform for automated test execution in clustered environm...ROCS 2 - advanced platform for automated test execution in clustered environm...
ROCS 2 - advanced platform for automated test execution in clustered environm...
Rina Uzhevko
 
Гибкое тестирование
Гибкое тестированиеГибкое тестирование
Гибкое тестирование
Rina Uzhevko
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QAFest
 
Как развить отдел тестирования от палки-копалки до CI
Как развить отдел тестирования от палки-копалки до CIКак развить отдел тестирования от палки-копалки до CI
Как развить отдел тестирования от палки-копалки до CI
CEE-SEC(R)
 
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Deutsche Post
 
Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)
Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)
Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)Ontico
 
Автоматизация тестирования как сервис
Автоматизация тестирования как сервисАвтоматизация тестирования как сервис
Автоматизация тестирования как сервис
automated-testing.info
 
Тестирование инсталляторов
Тестирование инсталляторовТестирование инсталляторов
Тестирование инсталляторов
SQALab
 
Подводные камни при построении процесса тестирования
Подводные камни при построении процесса тестированияПодводные камни при построении процесса тестирования
Подводные камни при построении процесса тестирования
SQALab
 
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаДелимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
SQALab
 
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
SQALab
 
Как вводить нового тестировщика в команду
Как вводить нового тестировщика в командуКак вводить нового тестировщика в команду
Как вводить нового тестировщика в команду
SQALab
 
Роль TestOps: расширяем традиционные обязанности тестировщика
Роль TestOps: расширяем традиционные обязанности тестировщикаРоль TestOps: расширяем традиционные обязанности тестировщика
Роль TestOps: расширяем традиционные обязанности тестировщика
SQALab
 

What's hot (20)

Виталий Стрелюк
Виталий СтрелюкВиталий Стрелюк
Виталий Стрелюк
 
Sq adays 2010_balashenko
Sq adays 2010_balashenkoSq adays 2010_balashenko
Sq adays 2010_balashenko
 
Оценка проектов тестирования
Оценка проектов тестированияОценка проектов тестирования
Оценка проектов тестирования
 
Переписать нельзя рефакторить
Переписать нельзя рефакторитьПереписать нельзя рефакторить
Переписать нельзя рефакторить
 
Serious+performance+testing
Serious+performance+testingSerious+performance+testing
Serious+performance+testing
 
Нагрузка и автоматизация в большой организации. Движение к DevOps
Нагрузка и автоматизация в большой организации. Движение к DevOpsНагрузка и автоматизация в большой организации. Движение к DevOps
Нагрузка и автоматизация в большой организации. Движение к DevOps
 
Шаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптовШаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптов
 
ROCS 2 - advanced platform for automated test execution in clustered environm...
ROCS 2 - advanced platform for automated test execution in clustered environm...ROCS 2 - advanced platform for automated test execution in clustered environm...
ROCS 2 - advanced platform for automated test execution in clustered environm...
 
Гибкое тестирование
Гибкое тестированиеГибкое тестирование
Гибкое тестирование
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
Как развить отдел тестирования от палки-копалки до CI
Как развить отдел тестирования от палки-копалки до CIКак развить отдел тестирования от палки-копалки до CI
Как развить отдел тестирования от палки-копалки до CI
 
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
 
Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)
Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)
Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)
 
Автоматизация тестирования как сервис
Автоматизация тестирования как сервисАвтоматизация тестирования как сервис
Автоматизация тестирования как сервис
 
Тестирование инсталляторов
Тестирование инсталляторовТестирование инсталляторов
Тестирование инсталляторов
 
Подводные камни при построении процесса тестирования
Подводные камни при построении процесса тестированияПодводные камни при построении процесса тестирования
Подводные камни при построении процесса тестирования
 
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяцаДелимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
Делимся опытом: как мы оптимизировали тестирование крупного проекта за 3 месяца
 
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
 
Как вводить нового тестировщика в команду
Как вводить нового тестировщика в командуКак вводить нового тестировщика в команду
Как вводить нового тестировщика в команду
 
Роль TestOps: расширяем традиционные обязанности тестировщика
Роль TestOps: расширяем традиционные обязанности тестировщикаРоль TestOps: расширяем традиционные обязанности тестировщика
Роль TestOps: расширяем традиционные обязанности тестировщика
 

Similar to Что DevOps должен знать про статический анализ кода?

Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
Sam Faktorovich
 
Наблюдай. Анализируй. Управляй
Наблюдай. Анализируй. УправляйНаблюдай. Анализируй. Управляй
Наблюдай. Анализируй. Управляй
Max Babich
 
IT people
IT peopleIT people
IT people
Maria Makarova
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontend
Denis Kolesnikov
 
Александр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутриАлександр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутриDaria Oreshkina
 
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Ontico
 
Реальный DevOps в энтерпрайзе
Реальный DevOps в энтерпрайзеРеальный DevOps в энтерпрайзе
Реальный DevOps в энтерпрайзе
Alexander Taratorin
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинOntico
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
HappyDev
 
Человек со стокгольмским синдромом
Человек со стокгольмским синдромомЧеловек со стокгольмским синдромом
Человек со стокгольмским синдромом
SQALab
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
Denis Tuchin
 
технологии внедрения корпоративного портала с практическими примерами внедрений
технологии внедрения корпоративного портала с практическими примерами внедренийтехнологии внедрения корпоративного портала с практическими примерами внедрений
технологии внедрения корпоративного портала с практическими примерами внедрений
Tatjana Ostretsova
 
как инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесукак инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесуAndrey Rebrov
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
Ontico
 
Наталья Руколь (Лаборатория Качества)
Наталья Руколь (Лаборатория Качества)Наталья Руколь (Лаборатория Качества)
Наталья Руколь (Лаборатория Качества)Ontico
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
0leGG
 

Similar to Что DevOps должен знать про статический анализ кода? (20)

Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 
Наблюдай. Анализируй. Управляй
Наблюдай. Анализируй. УправляйНаблюдай. Анализируй. Управляй
Наблюдай. Анализируй. Управляй
 
IT people
IT peopleIT people
IT people
 
Software Analytics in frontend
Software Analytics in frontendSoftware Analytics in frontend
Software Analytics in frontend
 
Критерии выбора системы электронного документооборота
Критерии выбора системы электронного документооборотаКритерии выбора системы электронного документооборота
Критерии выбора системы электронного документооборота
 
Александр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутриАлександр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутри
 
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
 
Реальный DevOps в энтерпрайзе
Реальный DevOps в энтерпрайзеРеальный DevOps в энтерпрайзе
Реальный DevOps в энтерпрайзе
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Человек со стокгольмским синдромом
Человек со стокгольмским синдромомЧеловек со стокгольмским синдромом
Человек со стокгольмским синдромом
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
технологии внедрения корпоративного портала с практическими примерами внедрений
технологии внедрения корпоративного портала с практическими примерами внедренийтехнологии внедрения корпоративного портала с практическими примерами внедрений
технологии внедрения корпоративного портала с практическими примерами внедрений
 
как инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесукак инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесу
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
Наталья Руколь (Лаборатория Качества)
Наталья Руколь (Лаборатория Качества)Наталья Руколь (Лаборатория Качества)
Наталья Руколь (Лаборатория Качества)
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 

More from Andrey Karpov

60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста
Andrey Karpov
 
60 terrible tips for a C++ developer
60 terrible tips for a C++ developer60 terrible tips for a C++ developer
60 terrible tips for a C++ developer
Andrey Karpov
 
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Andrey Karpov
 
PVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error ExamplesPVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error Examples
Andrey Karpov
 
PVS-Studio in 2021 - Feature Overview
PVS-Studio in 2021 - Feature OverviewPVS-Studio in 2021 - Feature Overview
PVS-Studio in 2021 - Feature Overview
Andrey Karpov
 
PVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокPVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибок
Andrey Karpov
 
PVS-Studio в 2021
PVS-Studio в 2021PVS-Studio в 2021
PVS-Studio в 2021
Andrey Karpov
 
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Andrey Karpov
 
Best Bugs from Games: Fellow Programmers' Mistakes
Best Bugs from Games: Fellow Programmers' MistakesBest Bugs from Games: Fellow Programmers' Mistakes
Best Bugs from Games: Fellow Programmers' Mistakes
Andrey Karpov
 
Does static analysis need machine learning?
Does static analysis need machine learning?Does static analysis need machine learning?
Does static analysis need machine learning?
Andrey Karpov
 
Typical errors in code on the example of C++, C#, and Java
Typical errors in code on the example of C++, C#, and JavaTypical errors in code on the example of C++, C#, and Java
Typical errors in code on the example of C++, C#, and Java
Andrey Karpov
 
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
Andrey Karpov
 
Game Engine Code Quality: Is Everything Really That Bad?
Game Engine Code Quality: Is Everything Really That Bad?Game Engine Code Quality: Is Everything Really That Bad?
Game Engine Code Quality: Is Everything Really That Bad?
Andrey Karpov
 
C++ Code as Seen by a Hypercritical Reviewer
C++ Code as Seen by a Hypercritical ReviewerC++ Code as Seen by a Hypercritical Reviewer
C++ Code as Seen by a Hypercritical Reviewer
Andrey Karpov
 
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source SoftwareThe Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
Andrey Karpov
 
Static Code Analysis for Projects, Built on Unreal Engine
Static Code Analysis for Projects, Built on Unreal EngineStatic Code Analysis for Projects, Built on Unreal Engine
Static Code Analysis for Projects, Built on Unreal Engine
Andrey Karpov
 
Safety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Safety on the Max: How to Write Reliable C/C++ Code for Embedded SystemsSafety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Safety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Andrey Karpov
 
The Great and Mighty C++
The Great and Mighty C++The Great and Mighty C++
The Great and Mighty C++
Andrey Karpov
 
Static code analysis: what? how? why?
Static code analysis: what? how? why?Static code analysis: what? how? why?
Static code analysis: what? how? why?
Andrey Karpov
 
Zero, one, two, Freddy's coming for you
Zero, one, two, Freddy's coming for youZero, one, two, Freddy's coming for you
Zero, one, two, Freddy's coming for you
Andrey Karpov
 

More from Andrey Karpov (20)

60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста
 
60 terrible tips for a C++ developer
60 terrible tips for a C++ developer60 terrible tips for a C++ developer
60 terrible tips for a C++ developer
 
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
 
PVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error ExamplesPVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error Examples
 
PVS-Studio in 2021 - Feature Overview
PVS-Studio in 2021 - Feature OverviewPVS-Studio in 2021 - Feature Overview
PVS-Studio in 2021 - Feature Overview
 
PVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокPVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибок
 
PVS-Studio в 2021
PVS-Studio в 2021PVS-Studio в 2021
PVS-Studio в 2021
 
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
 
Best Bugs from Games: Fellow Programmers' Mistakes
Best Bugs from Games: Fellow Programmers' MistakesBest Bugs from Games: Fellow Programmers' Mistakes
Best Bugs from Games: Fellow Programmers' Mistakes
 
Does static analysis need machine learning?
Does static analysis need machine learning?Does static analysis need machine learning?
Does static analysis need machine learning?
 
Typical errors in code on the example of C++, C#, and Java
Typical errors in code on the example of C++, C#, and JavaTypical errors in code on the example of C++, C#, and Java
Typical errors in code on the example of C++, C#, and Java
 
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
 
Game Engine Code Quality: Is Everything Really That Bad?
Game Engine Code Quality: Is Everything Really That Bad?Game Engine Code Quality: Is Everything Really That Bad?
Game Engine Code Quality: Is Everything Really That Bad?
 
C++ Code as Seen by a Hypercritical Reviewer
C++ Code as Seen by a Hypercritical ReviewerC++ Code as Seen by a Hypercritical Reviewer
C++ Code as Seen by a Hypercritical Reviewer
 
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source SoftwareThe Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
 
Static Code Analysis for Projects, Built on Unreal Engine
Static Code Analysis for Projects, Built on Unreal EngineStatic Code Analysis for Projects, Built on Unreal Engine
Static Code Analysis for Projects, Built on Unreal Engine
 
Safety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Safety on the Max: How to Write Reliable C/C++ Code for Embedded SystemsSafety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Safety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
 
The Great and Mighty C++
The Great and Mighty C++The Great and Mighty C++
The Great and Mighty C++
 
Static code analysis: what? how? why?
Static code analysis: what? how? why?Static code analysis: what? how? why?
Static code analysis: what? how? why?
 
Zero, one, two, Freddy's coming for you
Zero, one, two, Freddy's coming for youZero, one, two, Freddy's coming for you
Zero, one, two, Freddy's coming for you
 

Что DevOps должен знать про статический анализ кода?

  • 1. Что DevOps должен знать про статический анализ кода? Евгений Рыжков, PVS-Studio
  • 2. Кто я? • Евгений Рыжков – руководитель и сооснователь PVS-Studio; • Год основания компании: 2008; • Офис - г. Тула (200 км от Москвы), штат 30 человек; • PVS-Studio – статический анализатор кода для C, C++, C# и Java на Windows, Linux и macOS • «CEO? А давно ли CEO программировал?»
  • 3. Ни слова про PVS-Studio больше…
  • 4. Содержание • Причины неудач внедрений. • Место статического анализа в DevOps-процессе. • Статический анализ – друг или враг. • Рассылка результатов анализа. • Что делать с 10 000 сообщений от анализатора при первом запуске? • Сколько времени нужно для правки всех ошибок? • Q&A, или что дальше?
  • 5. Что такое статический анализ кода? .. и как про него рассказывают на конференциях.
  • 6. Причины неудач внедрений • Технические. • Технические. • Технические. • Организационные.
  • 7. Место статического анализа в DevOps-процессе • Егор Бугаенко. Главное не качество, а количество! • Automated Build • Unit Tests • Test Coverage • Mutation Coverage • Static Analysis • Code Reviews • Read-Only Master Видео доклада на DevOpsConf Moscow 2018: https://devopsconf.io/moscow/2018/abstracts/3723
  • 8. Статический анализ – друг или враг (когда, как и почему) • Как избежать позора? • В зависимости от того, где и как внедрен инструмент люди к нему относятся по-разному. И это не зависит от языка разработки. • Ошибка найдена по месту и тут же исправлена? Отлично, я молодец! • Ошибка найдена на билд-сервере? Все видят мой фейл, давайте вырубим этот анализатор!
  • 9. Рассылка результатов статического анализа (всем или не всем) • Очевидные плюсы и неочевидные минусы. • У программиста завтра есть более важные дела, чем правка сегодняшней ошибки. И они действительно более важные в какой-то момент, а потом забывается.
  • 10. Кого еще добавлять в рассылку • Бывает нужно ставить в копию письма начальника (так себе конечно); • Неплохая идея добавлять в копию коллег для обучения; • Тим-лида в копию, чтобы был в курсе о правке багов – нормально.
  • 11. Что делать с 10 000 сообщений от анализатора при первом запуске? •НИ-ЧЕ-ГО!
  • 12. Сколько времени нужно для правки всех ошибок? • Ожидания • Реальность 0 5 10 15 20 25 1 2 3 4 5 Warnings 0 5 10 15 20 25 1 2 3 4 5 Warnings
  • 13. Так сколько нужно времени? • Проект 10 млн строк кода • 5 тысяч срабатываний анализатора • Команда: 3-4 человека • Время правки 3-4 месяца • Общие трудозатраты: 10-15 человеко-месяцев • Почему нельзя использовать эти данные для оценки :-)
  • 14. Заключение • Статический анализ – это процесс не только технический, но и прежде всего организационный. • Эффективность внедрения и использования статического анализа зависит от правильного выстраивания процессов. • Ответственным за правильный процесс должен быть менеджер (тим- лид, PM, CTO), но DevOps должен понимать суть процесса и подсказывать менеджеру, если тот не понимает что-то. • Хорошо себя зарекомендовала практика найти в компании энтузиаста этой технологии, который будет ее продвигать.
  • 15. Q&A, или что дальше • Скачайте анализатор, поиграйтесь с ним. • Обучите коллег, внедрите в своей проект. • Получите повышение и бонус за внедрение современных практик. :-) Главная мысль, которую вы должны вынести из доклада: • Статический анализ в ближайшие несколько лет будет как юнит-тесты или системы контроля версий. Раньше жили и без них, но «так жить нельзя».