Русский
Русский
English
Статистика
Реклама

Kotlin code style

Использование code-style плагинаktlintвKotlinпроекте. Краткая инструкция дляbackend-разработчика

02.03.2021 18:23:53 | Автор: admin

Я работаюJava/Kotlin-разработчиком в компании EPAM.

В первой статье ярассказывала про свой проект Brain-Up.

В этой статье хочу поделиться опытом настройки плагина ktlint для Kotlin проекта.

Данный плагин помогаетобеспечиватьединыйcodestyleна проекте. Он построен на официальных рекомендациях по форматированию кода дляKotlinотJetBrains.С помощью данного инструмента можно не только проверить код, но и отформатировать его.

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

Потому решилаподелиться свои опытом,надеюсь кому-то будет полезнапошаговая инструкция подключения к проекту.Этотпример актуален для проекта наKotlin1.4,gradle6.0.

#1. Добавление зависимости в build.gradle на плагин

dependencies {        ktlint "com.pinterest:ktlint:0.38.0"}

#2. Добавление gradle таски `ktlintFormat`

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

task ktlintFormat(type: JavaExec, group: "formatting") {    description = "Fix Kotlin code style deviations."        classpath = configurations.ktlint        main = "com.pinterest.ktlint.Main"        args "-F", "src/*/.kt"}

#3. Конфигурирование gradle таски `ktlint` для вашего проекта

project.task("ktlint", type: JavaExec) {        group = "verification"        description = "Runs ktlint."        main = "com.pinterest.ktlint.Main"        classpath = project.configurations.ktlint        args = [                    "--reporter=plain",                    "--reporter=checkstyle,output=${project.buildDir}/reports/ktlint/ktlint-checkstyle-report.xml",                    "src/*/.kt"    ]}

#4. Встраивание таски `ktlint` в процесс сборки приложения

compileKotlin.dependsOn ktlint

В данном случае проверка форматирования кода будет запускаться до компиляции. Чем быстрее мы узнаем онесоответствии, то есть упадет эта проверка,тем лучше. В этом случаеможновсёбыстроисправить.

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

Правим форматирование.

#5. Настройка параметров Idea для правильного форматирования

Это можно настроить здесь File -> Settings -> Code Style -> Kotlin.

#6. Форматирование текущего класса

Первый способ.

Мне удобно при работе с классом сразу по окончании нажатьCtrl+Alt+L,и класс автоматически отформатируется согласно установленным вIdeaсвойствам форматирования. Если выделить мышкой папочку в проекте и нажать на ней данную комбинацию, то отформатируются все классы в этой папочке согласно настройкамIdea, которые мы задали выше.

Второй способ.

Если не хочется настраиватьIdeaи пользоваться еёвозможностями форматированияможно перед сборкой запустить таскуktlintFormatона отработает для всего проекта.

#7. Выключение правил

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

Например,мы в проекте отказались от правила необходимости импортов быть отсортированными в лексикографическом порядке. То есть правило может это и не плохое,оно, кстати,недавно в плагине появилось, только вотCtrl+Alt+Lимпорты не группирует и таска ихktlintFormatтоже, а делать это каждый раз руками надоедает.

[*.{kt,kts}]disabled_rules = import-ordering

Резюме

Таквыглядитвbuild.gradleдобавление плагина в итоге у нас на проекте. Работаем с ним 2-й год, всё стабильно пока.

Если у вас есть свои идеи,опыт, как улучшить / решить задачу единого code style на Kotlin проекте,пишите в комментариях, будет интересно узнать:какими вы пользуетесь плагинами, насколько они удобны, стабильны к обновлениям языка и быстро настраиваемы.

Полный пример, при желании, можно посмотреть в нашем открытом репозитории Open Source социального проекта Brain-up, к которомуможет присоединитьсялюбойжелающий,получить опыт работы в профессиональной команде и принести реальную пользу обществу.

Вследующей статьепостараюсьрассказатьпроподключениеSonarCloud к Kotlin проекту,покоторомутоже было немаловопросов, когда у себя его настраивали.

Всем удачи!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru