🔥

Тред (Казаков Антон)


Сегодня вторник и поговорим мы о статическом анализе. О конкретных инструментах, лучших практиках и процессе написания кастомных проверок. Начнем со странного опроса: какой ваш любимый инструмент для статического анализа(kotlin/android)

Ваш любимый инструмент для статического анализа
🤔 42.9% detekt
🤔 20.6% ktlint
🤔 23.8% android lint
🤔 12.7% другой (пишите в реплаи)

Андроид линт умеет гораздо больше чем анализ соурс файлов

К тому же Тор говорил в нескольких паблих толках о том что команда видит Android Lint как general solution, а не анлроид специфик инструмент

Поэтому, чисто теоретически, можно закрыть все используя андроид линт. Но на практике у наc, например, используется детект для анализа general проблем в котлин сорсах и android lint для всего остального

Кстати, кто-нибудь использовал lp.jetbrains.com/qodana/ ? Очень интересно послушать про ваш опыт.

Как справедливо заметили ниже, все эти инструмента используются для немного разных целей, для common kotlin кода - detekt(внутри него рулсет из ктлинта), для всего остального android lint

Но если рассматривать их api, процесс написания и тестирования кастомных детекторов и прочее, то мой топ это явно android lint

Во-первых, возможность поставлять вместе с вашей библиотекой джарник с рулами, которые в последствии смержаться с рулами consumer приложения и подсветят неправильное использование API библиотеки

Во-вторых, с помощью android lint можно анализировать практически все, что может лежать в android проекте. Начиная с kotlin и java сорсов, заканчивая proguard конфигами

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

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

Наши системы развиваются, а значит должны развиваться инструменты стат. анализа

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

Самый полезный источник - это мониторинг пулл-реквестов. Если вы видите что разные люди ошибаются в одной и той же конструкции: 1) проверьте, задокументирован ли этот момент 2) напишите на него линт правило