Вчера я был на Dutch Clojure Meetup, поэтому сегодня пост про линтеры в Clojure. Про Clojure у меня был пост в @opendevcast. Что сейчас важно знать, так это то что это такой диалект Lisp со скобочками и возведенным в абсолют минимализмом концепций. Там нет даже операции присваивания, оно делается через специальные функции. Нет синтаксиса, нет проблем. Собственно, линтеров там не так много. На практике используются два:

  • joker – написан на Go, потому что Clojure медленный. У этого Джокера есть чувство юмора, да. Его используют все, потому что всё, что он говорит – ошибки, из-за которых программа точно упадёт.

  • clj-kondo – ищёт конструкции, которые можно выкинуть или объединить, а также некоторые явные баги типа undefined variable и неправильного числа переданных в функцию аргументов. Использует GraalVM, чтобы собранные бинарники работали быстрее.

Почему-то это весь арсенал, который выявился в активном использовании у участников митапа. Давайте копать глубже:

  • (lint) eastwood – самый древний линтер, поэтому и звёздочек и известности у него много. Разработка там сейчас довольно пассивная. Возможно, написали всё, что хотели. Проверяет довольно базовые штуки.

  • kibit – единственный линтер, который проверяет “идиоматичность” кода типа форматирования и всего такого. Лидер по звёздочкам. Почему-то другие линтеры боятся заходить на эту территорию.

На самом деле, я на Clojure ни строчки кода не написал. Да и не уверен, напишу ли. Язык интересный, экосистема отличная, но даже не знаю 🤔