Что такое инструменты «статического анализа»?

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

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

Проще говоря, вы можете думать об инструментах статического анализа как о чем-то, что помогает вам поддерживать здоровую кодовую базу без фактического запуска этого кода.

Чем они вам полезны?

Качество продукции

Как инструменты статического анализа могут улучшить наш продукт?

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

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

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



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

Качество кода

Как инструменты статического анализа могут улучшить качество кода?

Они могут применять стандарты кодирования и анализировать графы зависимостей.

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

Существуют инструменты для анализа документации требований или документации по коду.

Их можно использовать для переформатирования кода или для измерения тестового покрытия.

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

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

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

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

В идеальном мире мы бы с самого начала писали код без проблем. Конечно, мы НЕ живем в идеальном мире, и код без ошибок - это мечта, но если мы последовательно анализируем наш код, исправляем эти проблемы и извлекаем уроки из процесса, тогда мы можем продолжать писать более эффективный код.

Проверка кода

Зачем нам нужны инструменты для этих вещей?

Ответ прост: «нет».

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

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

«Максимально автоматизировать»

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

Нет необходимости навязывать стили кода, вручную комментируя каждую строку в PR. Для разработчика анализ сложности кода может занять много времени и трудностей. Инструмент может выполнять один и тот же анализ с одинаковым вниманием к деталям каждый раз, каждый день.



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

Если инструмент указывает на отклонения от согласованного стиля, нет необходимости в обмене мнениями между членами команды. Нет предвзятости. Средство не в плохом настроении и комментирует каждую мелочь. Либо инструмент работает, либо нет.

Меньше времени на обсуждение и обсуждение мелких вопросов в обзоре оставляет дополнительное время для более интересного и важного разговора.

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

Защитите ваш код ревью и максимально автоматизируйте его.

Как их использовать?

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

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

Вот лишь несколько примеров различных инструментов статического анализа:

Мультиплатформенные инструменты

Специализированные инструменты

Как я уже сказал ранее, существует огромное количество инструментов статического анализа. Если вы ищете что-то конкретное, есть очень полный список доступен в Википедии и другой отличный список здесь, на GitHub.

Надеюсь, это пролило свет на то, что такое инструменты «статического анализа кода» и почему вы можете захотеть более внимательно изучить их использование в своих проектах.

Это первая часть из серии публикаций, в которой подробно рассматриваются инструменты статического анализа для проектов Android, так что следите за обновлениями в следующих публикациях.

Если вы ищете дополнительную информацию по этой теме, я также буду размещать сопутствующие видео на моем канале YouTube, и вы сможете увидеть там пик и / или подписаться на канал для будущих обновлений.

Ресурсы









Я люблю встречаться / разговаривать / обсуждать и помогать, где могу. Если вы хотите пообщаться или задать вопрос, вы можете подписаться на меня в Twitter, YouTube, Medium и Facebook.