TGViewer
Android Live 🤖 Android Live 🤖 @android_live · 5.13K subscribers
Post #282 3.64K
​​Статический анализ кода
#разработка #комментарии

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

• SpotBugs — достаточно распространенное решение, которое позволяет строить отчеты по текущей базе кода. Решение, которое не заработало у меня на проекте из-за наличия flavor.

• Infer — решение для статического анализа от Facebook, основано также на отчетах. Кроме того, позволяет строить отчеты для вновь добавленного кода. Не смог оценить решение из-за странных несовместимостей с последней версией JDK. Но выглядит интересно.

• Gnag — представляет из себя комбайн нескольких решений: checkstyle, pmd, findbugs, ktlint, detekt. Шикарное решение, которое работает сейчас на нашем проекте. Отдельной крутой фичей является анализ пулреквеста и добавление комментариев в нем, что позволяет встроить Gnag в CI.

• SonarQube — представляет из себя утилиту для детального отчета на сервере, показа текущего статуса приложения и количества критичных багов. Очень удачное решение, однако стартовая версия имеет ряд ограничений: анализ только master-ветки, отсутствие интеграции в CI, отсутствие интеграции с GitHub. Но получать отчет и анализировать его вы сможете и в ней.

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

А что вы используете на своих проектах?
  • 👍 1
More from @android_live
  1. Oct 6, 2026Git --delete-merged На днях узнал про любопытную команду в Git — --delete-merged . Суть пр…
  2. Oct 5, 2026Почему Android-эмулятор жрёт 8 ГБ? На днях попался репозиторий с CLI-тулзой, которая обеща…
  3. Sep 29, 2026Post #1130
  4. Sep 29, 2026На днях попалась вакансия мечты Вроде всё начинается как неплохо: удалёнка, Kotlin/Jetpack…
  5. Sep 28, 2026На днях ревьювил код, связанный с копированием в буфер обмена И заметил, что многие прилож…
  6. Sep 26, 2026AirDrop на Android, похоже, уже есть на нескольких моделях Android Но, оказывается, всё эт…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →