Рубрики
Без рубрики

Три вещи, которые ваш линтер не должен сказать вам

Как мы выкурили наш код проверки в Bento. Теги с WebDev, Python, JavaScript.

Мой сотрудник Grayson изначально написал этот пост блога. Это было впервые написано на Инженерный блог R2C . На R2C мы любители линта в сердечных и ценных инструментах, которые помогают нам написать лучший код, быстрее. Тем не менее, иногда мы оставляем желать немного больше от приятных …

О, правила Eslint не включены по умолчанию? Что лучше, список правил Airbnb или Google? Bandit дает мне тысячи ошибок? О, это просто утверждать Отказ Почему бандит считает Утверждать нарушение безопасности? 🤔 Разве это не будет легче? …

Не было бы здорово иметь код проверки кода, где вы мог просто запустить чек об оплате И это показало вам результаты, о которых вы заботитесь?

Мы делаем новый инструмент разработчика под названием Бенто Отказ Время разработчика ценно, и мы часто слышим от разработчиков, которые их оттенки требуют от них много. Наша вера в том, что ваш линтер не должен беспокоить вас с вещами, о которых вы не заботитесь, поэтому в Bento мы выключаем проверки на основе этих трех вещей:

ЛИНТЕРЫ НЕ ДОЛЖНЫ Рассказать вам о нарушениях стиля

Честно говоря, нам не волнует одну или две линии между определениями функций или должны ли пробелы вокруг двоичных операторов. С детерминированными форматцами, как Черный для Python и Красивее Для JavaScript есть Нет необходимости Потратьте ценное время разработки вручную устранение нарушений стиля, когда форма может сделать это автоматически.

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

Для Eslint (с Config airbnb config ) это сумма для отключения всех проверок, помеченных «стилем» как Eslint и Airbnb , проверяет «предпочитаю» в названии, и несколько проверок, которые определены наш ручной экспертизы, не указывали на наличие фактической ошибки.

Для Flake 8 эта сумма для большинства Pycodestyle проверки.

ЛИНТЕРЫ не должны рассказать вам о непопулярных чеках

Мы предположили, что мы могли бы получить хорошую оценку для проверки, что разработчики, как и не нравится, добывая файлы конфигурации для инструментов проверки кода в открытом исходном коде. Использование нашей нашей платформы анализа кода, app.r2c.dev Мы заминировали конфигурации Eslint верхних 1000 пакетов NPM (по состоянию на апрель 2019 года) и 128 конфигураций бандитов на GitHub.

Проверки ESLINT отключения:

Возможно неудивительно, что около 38% репозиториев глобально отключено Нет консоли Отказ Видимо, люди любят console.log Что имеет смысл! Мы отключаем эту проверку в Бенто.

Отключенные проверки бандита:

Из конфигуров бандитов, почти 80% отключить assert_used - b101 Действительно Мы тоже отключаем эту проверку в Бенто. Около 45% также отключить Случайный - B311. Итак, мы также отключаем это.

Как вы можете себе представить, это первый шаг в Пошив чеков к вашему коду Отказ В будущем Бенто покажет вам чеки Вы хотите увидеть Определение того, что проверки становятся фиксированными … и которые игнорируются. Это будет невероятно мощным – и необходимо – как мы добавляем поддержку большего количества проверок кода.

ЛИНТЕРЫ не должны рассказывать вам о «плохих чеках»

Предоставлено, определение «плохого» субъективно! 🤗. Вообще говоря, наше определение «плохого чека» – это чек с высокой достойной позитивной скоростью и низким шансом быть ошибкой.

В качестве примера B105 Проверяет hardcoded_password_strings Отказ Теоретически, этот чек отлично!

  • Предотвращает проверку в жесткокодируемых секретах, а также
  • Это предотвращает легко угадываемые значения по умолчанию – например, admin: пароль Отказ

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

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

#https://github.com/cobbler/cobbler/blob/91e3ff1d2a05eeb24107ef72e09c1a3d800ae304/cobbler/web/templatetags/site.py#L245
while not self.at_end():
    token = self.get_token()
    if token == 'not':    # B105 fires here
        if self.at_end():
            raise self.error_class('No variable provided after "not".')
        token = self.get_token()
        negate = True

Быть более научным, мы можем измерить точность проверки. После строго рассмотрения 20 репозиториев, в том числе Джанго и Anbible , B105 ничего не ударяет о важности 93% времени. Хотя теория хорошая, эта проверка довольно шумная. Поэтому Bento отключает эту проверку. (FYI, ни Django, ни Anisible Используйте жесткозедированные пароли! … За исключением их тестовых файлов. 😉)

Проверки мы отправляем в Бенто рассмотрены таким образом. Если чек «плохо», – это отключено. Если «плохое» не может быть определено, мы оставляем его включенным. Мы полагаем, что наши пользователи скажут нам, если это плохо! 😅

Запустите Bento в своем коде

Мы очень заботимся о качестве кода в R2C, и мы любим наших линтеров! Мы сделали еще проще написать лучший код быстрее, отфильтровая чеки, которые мы не хотим, чтобы отрицатели рассказать нам о. Вы можете запустить Бенто В вашем коде, чтобы воспользоваться преимуществами этих проверок, следуя этой ссылке: https://bento.dev/ Отказ

Если у вас есть отзывы или комментарии для нас, Свяжитесь с нами по электронной почте или сделать проблему на Github Отказ

Оригинал: “https://dev.to/pabloest/three-things-your-linter-shouldn-t-tell-you-1344”