Или част от процеса с тези инструменти

В голяма компания или неиндивидуален проект винаги ще има преглед на кода. Другият ви член на екипа ще преглежда вашия код и ще коментира, ако има някакво подозрение. Освен това това е уморителен процес, ако файлът с промените е огромен. Осъзнавате или не, когато преглеждате кода, винаги ще видите някои ненужни неща, които не трябва да ви се набиват на очи. Като отстъп, структура на класа, импортиране на заместващи символи, конвенция за код и т.н. Е, можете да се отпуснете, тези тривиални проблеми могат да бъдат решени автоматично чрез статичен анализ на кода.

Какво точно е статичен анализ на код? Това е процес на изследване на кода без стартиране на програмата. Процесът на проверка се основава на набор от правила, които разработчиците или инструментът вече са задали. Разбира се, не е нужно да го правите ръчно, за щастие има инструмент, който може да свърши работата автоматично. Този инструмент се нарича анализатор на статичен код. Има много известни инструменти за анализ на статичен код, като Android Lint, Ktlint, Detekt, Spotless и т.н. Някои инструменти като SonarQube правят повече от просто анализиране на код, той разглежда уязвимостта на вашия код, дублиран код и др.

Има много предимства от внедряването на тези инструменти за анализ на статичен код в нашия проект.

  1. Време. Добавянето на анализатор на статичен код означава, че кодът, който е бил успешно ангажиран, вече отговаря на стандарта. Когато преглеждаме кода, просто трябва да се съсредоточим върху важни неща. Можете също така да стартирате процеса преди или след натискане към произхода и преди сливане към мастер. Изборът ви подхожда най-много, целта е същата.
  2. Налагане на стандартен код.Работата с много хора по един проект трябва да има някакъв стандарт. Внедрете анализатор на статичен код, принуждавайки разработчика да следва правилото.
  3. Минимизиране на грешки и проблеми с производителността. Някои правила вече следват стандартните указания, които правят нашето приложение по-добро. Като използване на за всеки и вградена функция, когато е необходимо.

В тази статия ще разгледаме основното използване на Ktlint и Detekt, тъй като са доста известни в общността (повече от 4k звезди всеки). За демонстрационни цели бях създал прост проект, който имаше всичко, което ще обясня по-късно, вземете го тук.

Ктлинт

Според официалната документация, Ktlint е linter на Kotlin против велосипеди с вграден форматиращ инструмент. Има някои правила, които са активни по подразбиране при изпълнение на задачата Ktlint, които можете да намерите тук. Нека започнем да го интегрираме в проекта за Android.

  • Добавете зависимостта. Препоръчително е да използвате плъгина, както е посочено тук. Ще използваме Jlleitschuh.
  • Добавете конфигурацията на Ktlint. Ще го внедрим във allProjects, така че други модули да бъдат интегрирани с Ktlint. От снимката по-долу можете да видите, че има допълнителна конфигурация. Няма да го обяснявам тук, отидете да проверите проекта, тъй като добавям някои коментари там.
  • (По избор) Можете също така да промените директорията на файла на отчета. По подразбиране той ще бъде поставен в build/reports/ktlint.
  • Отидете да синхронизирате проекта си. След това вече успешно интегрирате Ktlint в проекта за Android.

За да проверите дали задачата Ktlint е достъпна за изпълнение, изпълнете командата ./gradlew taskна терминала, резултатът трябва да е като по-долу.

Ktlint имаше две задачи на Gradle, които можете да изпълнявате, като всяка имаше своя собствена работа. Първият е ktlintCheck,той ще провери целия ви код и ще докладва, ако има нарушение. Второто е ktlintFormat,задачата е същата като ktlintCheck, но има допълнителна работа. Той също така ще преформатира вашия код автоматично въз основа на правилата. Моля, имайте предвид, че има ограничения, не всяко нарушение ще бъде преформатирано.

Можете да получите пълния код за интегриране на Ktlint тук.

Детект

Detekt е анализатор на статичен код. Имаше същата основна работа като Ktlint, да сканира вашия код и да го докладва, ако има нарушение, но е много по-мощен, поне за мен. Detekt също така идва с предварително дефинирани правила, които можем лесно да включваме и изключваме, за пълни правила проверете „тук“.

  • Същото с Ktlint, първо добавете зависимостта. Научете повече тук.
  • Добавете малко конфигурация към Detekt. Ще внедрим конфигурацията в allProject. За многомодулния проект има функция за обединяване на отчети от всички модули само в един файл с отчети. Има също базова линия и разположение на конфигурацията.
  • Синхронизирайте проекта и проверете за налична задача на Gradle, уверете се, че можете да намерите detekt там.

Освен правилата, които идват по подразбиране, можете да добавите свое собствено правило към Detekt. Да приемем, че сте имали конвенция или някакво ограничение, когато кодирате във вашата компания или проект, можете да добавите това към Detekt, така че Detekt ще включи тези правила, когато проверява кода. Можете да намерите това в проекта, но инструкциите ще бъдат обяснени в отделна статия.

Освен това всяко нарушение имаше собствена прогноза за времето за разрешаването му. Тази прогноза е отпечатана във всяко правило. Когато отчетът е излязъл, той също така ще покаже колко време вие ​​и вашият екип трябва да коригирате всички нарушения. Може да отнеме дни, седмици или дори месеци

Това е! Готов си! Сега можете да започнете да използвате Ktlint и Detekt във вашия проект. Но имайте предвид, особено в големия проект, времето за отстраняване на проблема не е кратко. Можете да започнете да прилагате правилото едно по едно. След като дадено правило бъде прието, продължете към следващото.

Можете да получите пълния код за интегриране на Detekt тук.

Заключително изявление

Основната роля на статичния анализ на кода е да ни помогне да се погрижим за проблеми като кодова конвенция, производителност на кода и т.н.

Моля, изберете кои инструменти покриват вашия случай на употреба. Освен двете, които току-що обсъдихме, има някои други, споменати по-рано, които си струва да разгледате и опитате. Процесът на настройка е само началото, добавяйки към тръбопровода, карайки всяко кодиране да преминава всички правила и други неща, които трябва да направите, за да използвате напълно това във вашия проект/екип. Отделете време, добавете правилата едно по едно, направете така, че вашият код да следва всички правила наведнъж, може да причини главоболие.

Ресурси





За пълния проект можете да проверите моя Github тук.

Благодаря за четенето.