﻿# Видео о статическом анализе кода

На IT конференциях и встречах, посвященных различным языкам программирования, появляется все больше спикеров с докладами о статическом анализе кода\. И хотя это довольно узкоспециализированная область, но и здесь можно найти немало интересных выступлений, которые помогают понять методологию, использование и особенности статического анализа кода\. В этой статье собраны видео данной тематики, которые благодаря лёгкой форме подачи материала, могут быть полезны и интересны широкой аудитории, как профессиональных программистов, так и новичков\. 

![0501_Videos_about_static_code_analysis_ru/image1.png](https://import.viva64.com/docx/blog/0501_Videos_about_static_code_analysis_ru/image1.png)

## Русскоязычные видео

### Статический анализ кода

<https://www.youtube.com/watch?v=nz1ZmHArPX4&feature=youtu.be>

Автор: Кошелев Артём

Составляющие качественного кода — понятность, простота, архитектура\. В видео рассказывается, что из себя представляет статический анализ, какого его устройство и какие инструменты он использует\. Поднимаются вопросы об особенностях, достоинствах и недостатках динамического и статического анализа\. Рассматриваются популярные инструменты статического анализа, в частности SonarQube\.

### Статический анализ, как гигиена кода

<https://www.youtube.com/watch?v=YNrr_mMgEDU&feature=youtu.be>

Автор: Андрей Карпов

Видео с конференции DotNext 2015 Moscow\. В докладе рассказывается о способах обнаружения ошибок, методологии статического анализа, правильном и неправильном использовании инструментов анализа кода\. Автор также приводит мифы о статическом анализе, которые могут ввести в заблуждение разработчиков\. Демонстрируются примеры ошибок в Open Source проектах, выявленных с помощью таких инструментов, как ReSharper, PVS\-Studio, Visual Studio SCA\. 

### Статический анализ в C\+\+ и анализ производительности

<https://www.youtube.com/watch?v=6m1KcWxWDNg&feature=youtu.be>

Авторы: Александр Нежельский, Евгений Буштырёв, Никита Какуев, Николай Дьяконов\.

Запись доклада, озвученного в рамках события CoLaboratory в штаб\-квартире "Лаборатории Касперского"\. В видео обсуждается статический анализ C\+\+ кода и анализ производительности программ\. В числе прочего авторы рассказывают, как сделать код пригодным для статического анализа, как бороться с ложными срабатываниями и как расширять функциональность Clang Static Analyzer за счет собственных проверок\.

### Современный статический анализ кода: что умеет он, чего не умели линтеры

<https://www.youtube.com/watch?v=aQaJs7PcJao&feature=youtu.be>

Автор: Павел Беликов

Видео с конференции C\+\+ CoreHard Winter 2017\. Автор показывает, чему со времени появления по сегодняшний день научились статические анализаторы\. Рассматриваются различные методики анализа, как они появлялись и какие ошибки можно с их помощью найти\. В видео проводится разбор ошибок, найденных в Open Source проектах, и рассказывается, чем статический анализатор отличается от "линтеров" и некоторых других инструментов, а также какие проблемы, помимо анализа кода, он решает\. 

### Сценарии использования статического анализатора

<https://www.youtube.com/watch?v=k9zjmg7spEA&feature=youtu.be>

Автор: Валерий Игнатьев

Доклад со встречи SPB \.NET, где автор рассматривает сценарии использования статического анализатора и предостерегает от возможных ошибок\. Так же вкратце рассматриваются коммерческие инструменты статического анализа\.

### Сlang\-Tidy путешествие внутрь C\+\+ Abstract Syntax Tree

<https://www.youtube.com/watch?v=6azelG0PbAs&feature=youtu.be>

Автор: Юрий Ефимочев

Видео с конференции CoreHard Summer Conf 2016\. Семейство библиотек Clang предоставляет разработчикам широчайшие возможности по реализации различных инструментов, основанных на разборе и анализе абстрактного синтаксического дерева \(AST\)\. В частности, авторы Clang выпускают такой инструмент, как Clang\-Tidy, который является мощным статическим анализатором кода\. В видео рассматривается, как этот инструмент применяется в процессе разработки для С\+\+ и как дополнить его собственными проверками\. Попутно идет разбор некоторых занимательных особенностей AST для С\+\+\.

### Не все статические анализаторы одинаково полезны

<https://www.youtube.com/watch?v=axwoBjT3R-M&feature=youtu.be>

Автор: Владимир Кошелев

Видео с конференции DotNext 2016 Spb\. В докладе речь пойдет о популярных инструментах, ищущих нарушения Guidelines, ошибки copy\-paste и опечатки в исходном коде\. Обсуждаются результаты работы этих инструментов на наборе Open Source проектов, а также об используемой при сравнении методике\. Далее рассматриваются более сложные ошибки, такие как возникновение NullReferenceException или утечка ресурсов, и способы их обнаружения\. Помочь обнаружить такие ошибки может как чисто статический анализ, например, Coverity Prevent, так и статико\-динамический, такой как IntelliTest\(Pex\)\. 

### Статический анализ кода в контексте SSDL

<https://www.youtube.com/watch?v=30re90uJSjc&feature=youtu.be>

Автор: Иван Ёлкин

Видео с форума PHDays VI\. Ведущий фаст\-трека рассказывает об опыте внедрения Static Analysis Security Tool в QIWI, о сложностях, с которыми сталкивались разработчики\. Разбирает такие вопросы, как писать "костыли" или рефакторить код, а также что делать, когда мнения клиента и разработчика расходятся\. Расскажет, сколько строк кода пришлось прочитать и написать до и после запуска сканера, и предложит краткий обзор найденных и упущенных уязвимостей\.

### Статический анализ кода JS

<https://www.youtube.com/watch?v=F7FtAxUHd54&feature=youtu.be>

Автор: Антон Хлыновский

Многим разработчикам приходилось работать с линтерами, минификаторами или бандлерами\. Все они так или иначе работают с кодом, не запуская его\. Магия, работающая под капотом таких инструментов, называется статическим анализом кода и именно о ней автор рассказывает в данном видео: как и чем разбирать код JS; как потом собрать его обратно; какие возможности это даёт и на какие косяки можно напороться, когда будет желание написать свой собственный код на JS, работающий с кодом на JS\.

## Англоязычные видео

### Что такое статический анализ?

<https://www.youtube.com/watch?v=POvX4hYIoxg&feature=youtu.be>

Автор: Matt Might

Статические анализаторы позволяют разработчикам оценить и предсказать поведение программы, не запуская ее\. Когда\-то использовавшиеся исключительно для оптимизации, они быстро выросли и стали известны в таких областях, как обеспечение безопасности и автоматическое распараллеливание\. Автор проводит экскурсию ознакомления со статическим анализом через призму абстрактной интерпретации\.

### Статический анализ кода: просканируйте весь свой код на ошибки

<https://www.youtube.com/watch?v=Heor8BVa4A0&feature=youtu.be>

Автор: Jared DeMott

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

### Статический анализ кода: предотвращение ошибок и замедлений до того, как они случаются

<https://www.youtube.com/watch?v=VxeC7WFfg3Q&feature=youtu.be>

Автор: Vinny DaSilva

Встреча с форума Unit 16 Los Angeles\. Автор рассказывает, как использовать инструменты статического анализа для улучшения качества кода в процессе разработки, как настроить статический анализ кода, чтобы соответствовать определенным потребностям и рабочим процессам команды разработчиков, а также как объединиться с непрерывными системами интеграции, чтобы давать разработчикам постоянную обратную связь\.

### Сделаем код более безопасным\! \- Обзор жизненного цикла безопасной разработки и статический анализ кода

<https://www.youtube.com/watch?v=DyWpRmhGnRI&feature=youtu.be>

Автор: Jason Cohen

Несмотря на экспоненциальный рост продуктов, спецслужб, компаний, сертификатов безопасности и общего интереса к этой теме, до сих пор каждый день обнародуются все новые уязвимости безопасности\. Внедрение передового опыта, принципов жизненного цикла разработки, а также статического анализа кода в этой области, может значительно снизить вероятность возникновения общих вопросов безопасности\. Обработка входных данных, Cross\-Site\-Scripting, переполнение буфера и другие задачи по\-прежнему представляют основную проблему безопасности\. Статический анализ кода может помочь найти многие из этих незаметных уязвимостей до того, как код выйдет из рук разработчика\. В видео рассматриваются общие передовые практики развития жизненного цикла безопасности и как интегрировать их в современные схемы разработки кода\. 

### Охота на баги с использованием статического анализа кода

<https://www.youtube.com/watch?v=Sb011qfbMkQ&feature=youtu.be>

Автор: Nick Jones

Видео с конференции BSlidesLondon 2016\. Автор рассказывает о целом ряде возможностей использования автоматизированных методов анализа для выявления ошибок и изъянов в безопасности приложений на уровне исходного кода, начиная от быстрых сценариев, переходя к коммерческим анализаторам и инструментам с открытым исходным кодом и заканчивая пользовательскими решениями\. Рассматривается, как эти методы могут быть использованы в системе непрерывной интеграции и как в самом начале цикла разработки можно обнаружить ошибки\.

### Текущее состояние \(бесплатного\) статического анализа

<https://www.youtube.com/watch?v=sn1Vg8A_MPU&feature=youtu.be>

Автор: Jason Turner

Видео с конференции CPPCON2015\. Обсуждаются имеющиеся в настоящее время бесплатные статические анализаторы, доступные для C\+\+\. Автор рассказывает какие ошибки могут поймать эти инструменты, а какие пропускают и почему статический анализ должен быть частью обычного процесса сборки\.

### Статический анализ и С\+\+: больше, чем Lint

<https://www.youtube.com/watch?v=rKlHvAw1z50&feature=youtu.be>

Автор: Neil MacIntosh

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

### Подружимся с инструментами статического анализа Clang

<https://www.youtube.com/watch?v=AQF6hjLKsnM&feature=youtu.be>

Автор: Gabor Horvath

Видео с конференции CPPCON2016\. В этом докладе представлен обзор инструментов статического анализа для C\+\+ с открытым исходным кодом\. Акцент делается на инструментах на основе Clang\. Понимание различных методов разработки таких инструментов может быть очень полезным, поскольку это помогает создавать более дружественный статический анализатор кода и понимать причину ложных срабатываний, а также показывает ограниченность имеющихся в настоящее время инструментов\. Автор дает краткий учебный материал о том, как использовать и интегрировать их в поток работы\. 

### Поиск багов при помощи Clang на этапе компиляции и во время выполнения

<https://www.youtube.com/watch?v=kkokHPKlhzQ&feature=youtu.be>

Автор: Bernhard Merkle

Видео с конференции ACCU 2016\. Анализ кода и проверка приобретают все большее значение в программировании и обеспечении качества программных проектов\. Особенно в таких языках, как С/С\+\+, ошибки могут вызвать неопределенное поведение и утечки памяти\. Инструменты статического анализа хорошо в этом помогают, но бывает трудно обнаружить проблемы, которые возникают во время выполнения программы\. В этом докладе показывается использование возможностей Clang для поиска багов, как во время компиляции \(с помощью статических анализаторов\), так и во время выполнения \(с помощью санитайзеров\)\. Сочетание обоих подходов позволяет повысить качество программного обеспечения\.

### Статический анализ исходного кода\. Следующее поколение

<https://www.youtube.com/watch?v=W_xIm5Djnpk&feature=youtu.be>

Автор: James Croall

Видео с конференции Devoxx 2016\. Прошли времена "линтеров" и прославленных проверок орфографии\. Сегодня статический анализ исходного кода является точным и надежным, и может найти сложные дефекты кодирования в параллельных программах, которые незаметны человеческим взглядом\. В докладе рассказывается, как в Open Source проектах разработчики, используя программное обеспечение Coverity, нашли и устранили критические ошибки, приводящие к падениям программ, и дефекты в области безопасности в языке Java\.

### Статический анализ сегодня спас мой код

<https://www.youtube.com/watch?v=TelqURPdQmQ&feature=youtu.be>

Автор: Damien Seguy

Видео с конференции PHP UK Conference 2017\. Инструменты статического анализа проверяют PHP\-код без его запуска\. Полностью автоматизированные, они привносят опыт, чтобы просмотреть код, обеспечить соблюдение передовых методов при программировании, поддерживать готовность кода для следующей версии PHP\. PHP 7 значительно расширил возможности по аудиту кода \- благодаря AST и возвращаемым типам, можно провести более глубокий анализ и предотвратить большее количество ошибок\. В этом видео автор рассмотрит текущее состояние инструментов статического анализа, покажет, что они могут найти, а также продемонстрирует, как интегрировать их в цикл разработки\.

### Статический анализ кода для Python

<https://www.youtube.com/watch?v=mfXIJ-Fu5Fw&feature=youtu.be>

Автор: Andrew Wolfe

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

### Дополнение статического анализа с использованием Ablation

<https://www.youtube.com/watch?v=wHIlNRK_HiQ&feature=youtu.be>

Автор: Paul Mehta

Конференция BH USA 2016\. Ablation является дополнительным инструментом к статическому анализу, созданным для извлечения информации из выполняемого процесса\. Эта информация затем импортируется в среду дизассемблирования, где она используется для разрешения виртуальных вызовов, выделения области исполняемого кода и визуально различия сценариев\. Цель Ablation заключается в расширении статического анализа с минимальными расходами или вовлечением пользователя\. Ablation позволяет легко сравнивать сценарии и выделить различающиеся\. Это достигается путем сравнения исполняемого кода, а не просто сопоставления данных\. Также в видео рассматривается сравнение запутанного сценария падения и исходного сценария\. 

## Заключение

Возможно, в некоторых видео тема статического анализа будет перекликаться, но каждая кодовая база уникальная и опыт одного разработчика может отличаться от опыта другого\. Авторы доносят свое знание методологии и опыт использования инструментов статического анализа до слушателей, чтобы те в свою очередь не совершали одни и те же ошибки, тратя нервы и время на их поиск и исправление\. Область статического анализа активно развивается, неизбежно некоторые правила устаревают и появляются новые диагностики и стандарты\. Поэтому нет смысла пытаться сравнить анализаторы на основании списков обнаруживаемых дефектов или по синтетическим тестам\. Единственный способ сравнить инструменты \- это запустить их на вашем коде и увидеть, какой из анализаторов лучше удовлетворяет ваши потребности и ожидания\.  

## Другие материалы

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