Меню

Linter status finished исправьте ошибки линтера он любит чистоту

Николай Дмитриев

«Исправьте ошибки линтера. Он любит чистоту.»

Я так понимаю, возможно где-то пробелы лишние или наоборот нет пробелов. Куда отправить код на проверку?


1


0

Используйте Хекслет по-максимуму!


  • Задавайте вопросы по уроку

  • Проверяйте знания в квизах

  • Проходите практику прямо в браузере

  • Отслеживайте свой прогресс

Зарегистрируйтесь или
войдите в свой аккаунт

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик

Разработка фронтенд-компонентов для веб-приложений



2 февраля



10 месяцев

Иконка программы Онлайн-буткемп. Фронтенд-разработчик

Интенсивное обучение профессии в режиме полного дня



9 февраля



4 месяца

Иконка программы Python-разработчик

Разработка веб-приложений на Django



2 февраля



10 месяцев

Иконка программы Java-разработчик

Разработка приложений на языке Java



2 февраля



10 месяцев

Иконка программы PHP-разработчик

Разработка веб-приложений на Laravel



2 февраля



10 месяцев

Иконка программы Инженер по тестированию

Ручное тестирование веб-приложений



2 февраля



4 месяца

Иконка программы Node.js-разработчик

Разработка бэкенд-компонентов для веб-приложений



2 февраля



10 месяцев

Иконка программы Fullstack-разработчик

Разработка фронтенд- и бэкенд-компонентов для веб-приложений



2 февраля



16 месяцев

Иконка программы Разработчик на Ruby on Rails

Создание веб-приложений со скоростью света



2 февраля



5 месяцев

Иконка программы Верстальщик

Верстка с использованием последних стандартов CSS



в любое время



5 месяцев

Иконка программы Аналитик данных

Профессия

В разработке
с нуля

Сбор, анализ и интерпретация данных



16 марта



8 месяцев

Anar

часть ошибок линтера исправил, остальные — не могу понять, этих строк у меня даже нет

// removed

FILE: /usr/src/app/tests/ArraysTest.php
----------------------------------------------------------------------
FOUND 10 ERRORS AFFECTING 10 LINES
----------------------------------------------------------------------
11 | ERROR | [x] Line indented incorrectly; expected 4 spaces, found
| | 2
| | (Generic.WhiteSpace.ScopeIndent.IncorrectExact)
12 | ERROR | [x] Line indented incorrectly; expected at least 4
| | spaces, found 2
| | (Generic.WhiteSpace.ScopeIndent.Incorrect)
13 | ERROR | [x] Line indented incorrectly; expected at least 8
| | spaces, found 4
| | (Generic.WhiteSpace.ScopeIndent.Incorrect)
15 | ERROR | [x] Line indented incorrectly; expected at least 8
| | spaces, found 4
| | (Generic.WhiteSpace.ScopeIndent.Incorrect)
16 | ERROR | [x] Line indented incorrectly; expected at least 8
| | spaces, found 4
| | (Generic.WhiteSpace.ScopeIndent.Incorrect)
17 | ERROR | [x] Line indented incorrectly; expected at least 8
| | spaces, found 4
| | (Generic.WhiteSpace.ScopeIndent.Incorrect)
19 | ERROR | [x] Line indented incorrectly; expected at least 8
| | spaces, found 4
| | (Generic.WhiteSpace.ScopeIndent.Incorrect)
20 | ERROR | [x] Line indented incorrectly; expected at least 8
| | spaces, found 4
| | (Generic.WhiteSpace.ScopeIndent.Incorrect)
21 | ERROR | [x] Line indented incorrectly; expected at least 8
| | spaces, found 4
| | (Generic.WhiteSpace.ScopeIndent.Incorrect)
22 | ERROR | [x] Line indented incorrectly; expected 4 spaces, found
| | 2
| | (Generic.WhiteSpace.ScopeIndent.IncorrectExact)
----------------------------------------------------------------------
PHPCBF CAN FIX THE 10 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------

Time: 273ms; Memory: 6MB

Linter status: finished → Исправьте ошибки линтера. Он любит чистоту.

ESLint — это инструмент, помогающий анализировать написанный на JavaScript код, находить синтаксические ошибки и автоматически их исправлять, писать аккуратный код в едином стиле по определённым правилам.

ESLint в терминале

Если у вас пока нет ESLint, его нужно установить из npm.

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

npm run lint

ESLint показывает, что нашёл 6 ошибок в файле main.js. Цифры слева говорят на какой строке, на каком символе, была найдена ошибка. Дальше в строке идёт описание ошибки. Например:

Пример описания ошибки

Текст 5 errors and 0 warnings potentially fixable with the `--fix` option после списка ошибок говорит о том, что пять из шести найденных ошибок ESLint сможет исправить автоматически.

Обратите внимание, что требования, по которым ESLint проверяет код, на каждом проекте могут быть свои, всё зависит от правил, принятых в команде. Например, в команде может быть принято использование двойных кавычек, в таком случае ESLint не будет ругаться на двойные кавычки, а вот при использовании одинарных возникнет ошибка. Такие правила описываются в специальном файле .eslintrc.

Исправление ошибок

Для исправления ошибок у ESLint есть опция fix. Чтобы воспользоваться этой опцией, выполним в терминале команду

npm run lint -- --fix

Ключ --fix говорит о том, что мы хотим исправить ошибки автоматически, а два подчёркивания -- перед ключом помогают понять терминалу, что ключ относится не к команде npm run lint , а к тому, что за ней скрывается — к eslint.

ESLint исправил 5 ошибок: поправил пробелы, заменил кавычки на одинарные, удалил ненужную точку с запятой — теперь код выглядит чище. Осталось вызвать функцию, чтобы исправить последнюю ошибку. Здесь ESLint нам не поможет.

Описание ошибки

ESLint в редакторе

А что, если нам хочется сразу, в момент написания кода, знать, какие ошибки мы совершаем, и исправлять их на лету? Для этого в редактор можно установить расширение для ESLint, которое будет подсвечивать найденную ошибку прямо в файле, а при наведении подсказывать, в чём именно ошибка.

Установка расширения для ESLint в VS Code

Расширение для ESLint в VS Code может попросить подтвердить его запуск, если пакет eslint установлен локально (наш случай). Когда расширение спросит, откуда брать пакет eslint, нужно нажать «Allow», чтобы разрешить использовать eslint в текущем проекте.

Установка расширения для ESLint в VS Code

С помощью расширения для ESLint в редакторе можно автоматически исправить ошибки. Для этого нужно навести на подсвеченную ошибку, нажать кнопку Quick fix во всплывающем окошке и выбрать один из предложенных вариантов. Например, можно исправить только конкретную ошибку, а можно и все доступные разом. Если ошибка не может быть автоматически исправлена, вместо кнопки Quick fix появится текст No quick fixes available или будут предложены альтернативные варианты решения.

Установка расширения для ESLint в Atom

В Atom тоже требуется специальное расширение linter-eslint для работы ESLint. Чтобы в Atom установить расширение, нужно перейти в раздел настроек «Install Packages». Открыть его можно из окна команд (сочетание клавиш Ctrl + Shift + P на Windows и Command + Shift + P на macOS), введя в поиске «Install Packages».

Также нужный раздел настроек можно открыть через меню: Edit → Preferences → Install — на Windows, Atom → Preferences → Install — в macOS.

Установка расширения для ESLint в Atom

Далее ищем нужное расширение и устанавливаем его:

Ищем нужное расширение и устанавливаем его

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

Устанавливаем все предложенные зависимости

Теперь можно приступить к исправлению ошибок, исправить большинство ошибок можно автоматически, наведя на ошибку и нажав «Fix» или снова использовать окно команд, где выполнить Linter Eslint: Fix File.

Включение поддержки ESLint в WebStorm

В WebStorm не нужно устанавливать отдельное расширение, ESLint работает в этом редакторе «из коробки», достаточно только включить поддержку ESLint. Откройте окно Preferences с настройками, перейдите на вкладку ESLint (Languages and Frameworks → JavaScript → Code Quality Tools → ESLint) и выберете автоматическую конфигурацию ESLint — Automatic ESLint configuration. При автоматической конфигурации ESLint всегда будет искать в директории проекта файл .eslintrc с правилами оформления кода и ориентироваться на него.

Исправляются ошибки так же просто, достаточно нажать правой кнопкой мыши в файле с ошибками и выбрать из списка «Fix ESLint problems».

Дополнительные материалы:

  • 34 инструмента для веб-разработчика на каждый день
  • Обзор Chrome DevTools. Решаем основные задачи разработчика
  • HTML-шаблонизаторы
  • Как проверить валидность HTML-разметки

в моих тестах Chai я часто обнаруживаю, что хочу использовать их утверждения, которые являются чем-то вроде .to.be.empty, .to.be.true e.т. c., потому что я нахожу их более чистыми для чтения, чем .to.be.length(1) или .to.be.equal(true). Однако, это разбивает мое Линтер (я с помощью Airbnb по умолчанию пылеобразования).

я мог бы использовать // disable-eslint-line синтаксис, но тогда мне пришлось бы добавить его к каждой строке, которая читается так, и это кажется утомительным.

Я также читал о DirtyChai библиотеки, но это потребует от меня вернуться через всю мою тестовую библиотеку, добавив к ним скобки, что кажется чем-то, что мне не нужно делать, просто чтобы заставить мой Линтер передать что-то, с чем он, вероятно, должен быть в порядке в первую очередь.

кто-нибудь знает лучший способ справиться с этим, чем способы, которые я изложил выше?

5 ответов


есть несколько решений/подходов. Вы можете просто отключить правило для всего файла, используя eslint-disable в верхней части файла, о котором идет речь:

/* eslint-disable no-unused-expressions */
expect(someTrueValue).to.be.true; 

однако добавление этого в верхней части каждого тестового файла также может быть утомительным. Другой вариант-отключить это правило для всех файлов в определенной папке (это также позволяет отключить другие правила, которые обычно отключены, но становятся хлопотными при тестировании, например no-underscore-dangle при использовании rewire).

вы можете сделать это, поставив .eslintc конфигурационный файл в том же каталоге, что и ваши тестовые файлы, настроенные для отключения этого правила. Это позволяет использовать конфигурацию по умолчанию для всех других правил, игнорируя это правило только для файлов в этой папке. ESLint называет это Configuration Cascading.


просто нашел другой вариант, используя Относительная Glob-Шаблоны:

в своем :

overrides: [
    {
        files: "*.test.js",
        rules: {
            "no-unused-expressions": "off"
        }
    }
]

Я сделал маленький плагин под названием eslint-plugin-chai-friendly, который переопределяет значение по умолчанию no-unused-expressions правило и делает его дружественным к чай. Измененное правило игнорирует expect и should операторы, сохраняя при этом поведение по умолчанию для всего остального.


в случае, если кто-то натыкается на это сегодня, у меня была та же проблема и нашел это решение на документация eslint. В файле конфигурации eslint можно указать одну или несколько сред, которые будут предопределять глобальные переменные для этой среды. Для нас, это было бы mocha, и вы настроите это в своем .eslintrc.json:

{
    "env": {
        "mocha": true
    },
    ...
    ...
    ...
}

в результате он удалит все ложноположительные о мокко describe, it, beforeEach, etc. без необходимости полностью отключить eslint или полностью отключить любое конкретное правило.

протестировано с ESLint В. 4.11 и мокко 5.0

0

автор: Pierre-Adrien Buisson


объединение ответ jonalvarezz С ответ Игоря Дьяченко дал мне именно то, что хотела:

npm install --save-dev eslint-plugin-chai-friendly

// .eslintrc.js
module.exports = {
  // ...
  plugins: ['chai-friendly'],
  overrides: [{
    files: '*.test.js',
    rules: {
      'no-unused-expressions': 'off',
      'chai-friendly/no-unused-expressions': 'off',
    },
  }],
  // ...
}

таким образом,no-unused-expression правило будет переопределено только в *.test.js файлы
И
а no-unused-expression правило по-прежнему будет на месте, чтобы поймать любые неиспользуемые выражения в тестовых файлах, которые не связаны с chai.


Ruby Course

If you are not familiar with linters and GitHub Actions, read root level README.

Set-up Rubocop GitHub Action

Rubocop is a Ruby static code analyzer (a.k.a. linter) and code formatter. It will enforce many of the guidelines outlined in the community Ruby Style Guide.

This GitHub Action is going to run Rubocop to help you find style issues.

Please do the following steps in this order:

  1. In the first commit of your feature branch create a .github/workflows folder and add a copy of .github/workflows/linters.yml to that folder.
    • Remember to use the file linked above
    • Remember that .github folder starts with a dot.
  2. Do not make any changes in config files — they represent style guidelines that you share with your team — which is a group of all Microverse students.
    • If you think that change is necessary — open a Pull Request in this repository and let your code reviewer know about it.
  3. When you open your first pull request you should see the result of the GitHub Actions:

gh actions checks

Click on the Details link to see the full output and the errors that need to be fixed:

gh actions failing checks

[OPTIONAL]Set-up RSpec GitHub Action

You can run your tests with GitHub Actions to ensure that they are passing before merging a PR.

To use the GitHub Action to run your tests, please do the following steps in this order:

  1. Add a copy of .github/workflows/tests.yml to your .github/workflows folder.
    • Remember to use the file linked above
    • Do not modify or delete the .github/workflows/linters.yml file that should already be in that folder.
    • RSpec by default will try to run any file ending in _spec.rb inside the spec folder. Make sure to follow this convention for your tests files so rspec can run your spec files.
    • You can modify the .github/workflows/tests.yml file to better fit your custom needs.
  2. When you open your pull request you should see the result of the GitHub Action:

gh actions checks

Click on the Details link of the test action to check the results of your tests.

Set-up linters in your local env

RuboCop

  1. Add this line to the Gemfile
    gem 'rubocop', '>= 1.0', '< 2.0'
    

    not sure how to use Gemfile? Read this.

  2. Run bundle install.
  3. Copy .rubocop.yml to the root directory of your project
  4. Do not make any changes in config files — they represent style guidelines that you share with your team — which is a group of all Microverse students.
    • If you think that change is necessary — open a Pull Request in this repository and let your code reviewer know about it.
  5. Run rubocop.
  6. Fix linter errors.
  7. IMPORTANT NOTE: feel free to research auto-correct options for Rubocop if you get a flood of errors but keep in mind that correcting style errors manually will help you to make a habit of writing a clean code!

Troubleshooting

  • While using Colorize gem, if you are facing errors with Rspec related to
    LoadError:
    cannot load such file -- colorize

    please remove --deployment from line no. 26 of test.yml file.

Ruby Course

If you are not familiar with linters and GitHub Actions, read root level README.

Set-up Rubocop GitHub Action

Rubocop is a Ruby static code analyzer (a.k.a. linter) and code formatter. It will enforce many of the guidelines outlined in the community Ruby Style Guide.

This GitHub Action is going to run Rubocop to help you find style issues.

Please do the following steps in this order:

  1. In the first commit of your feature branch create a .github/workflows folder and add a copy of .github/workflows/linters.yml to that folder.
    • Remember to use the file linked above
    • Remember that .github folder starts with a dot.
  2. Do not make any changes in config files — they represent style guidelines that you share with your team — which is a group of all Microverse students.
    • If you think that change is necessary — open a Pull Request in this repository and let your code reviewer know about it.
  3. When you open your first pull request you should see the result of the GitHub Actions:

gh actions checks

Click on the Details link to see the full output and the errors that need to be fixed:

gh actions failing checks

[OPTIONAL]Set-up RSpec GitHub Action

You can run your tests with GitHub Actions to ensure that they are passing before merging a PR.

To use the GitHub Action to run your tests, please do the following steps in this order:

  1. Add a copy of .github/workflows/tests.yml to your .github/workflows folder.
    • Remember to use the file linked above
    • Do not modify or delete the .github/workflows/linters.yml file that should already be in that folder.
    • RSpec by default will try to run any file ending in _spec.rb inside the spec folder. Make sure to follow this convention for your tests files so rspec can run your spec files.
    • You can modify the .github/workflows/tests.yml file to better fit your custom needs.
  2. When you open your pull request you should see the result of the GitHub Action:

gh actions checks

Click on the Details link of the test action to check the results of your tests.

Set-up linters in your local env

RuboCop

  1. Add this line to the Gemfile
    gem 'rubocop', '>= 1.0', '< 2.0'
    

    not sure how to use Gemfile? Read this.

  2. Run bundle install.
  3. Copy .rubocop.yml to the root directory of your project
  4. Do not make any changes in config files — they represent style guidelines that you share with your team — which is a group of all Microverse students.
    • If you think that change is necessary — open a Pull Request in this repository and let your code reviewer know about it.
  5. Run rubocop.
  6. Fix linter errors.
  7. IMPORTANT NOTE: feel free to research auto-correct options for Rubocop if you get a flood of errors but keep in mind that correcting style errors manually will help you to make a habit of writing a clean code!

Troubleshooting

  • While using Colorize gem, if you are facing errors with Rspec related to
    LoadError:
    cannot load such file -- colorize

    please remove --deployment from line no. 26 of test.yml file.

Как исправить предупреждение линтера «Ошибка возвращаемого значения не проверено»?

Я вызываю метод со значением типа ошибки (foo() в примере кода). Меня не волнует этот результат. Каков правильный способ написания кода? Errcheck linter заставляет меня проверить эту ошибку.

//for example, same method may be called from imported entity
func foo() error {
   if err := someFunction(); err != nil {
       return err
   }
   return nil
}

func process() {
   //linter doesn't like this
   foo()

   //this way leads to unused variable error
   err := foo()

   //is this clean way?
   _ = foo()

  return 
}

Перейти к ответу
Данный вопрос помечен как решенный


Ответы
3

Это идиоматический способ:

err := foo()
if err != nil {
  // handle your error here
}

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

Да, присвоение его переменной с подстановочным знаком было бы хорошим способом игнорировать ошибку. Но вся практика (игнорирования ошибок) категорически не рекомендуется. Вот что говорит об этом «Effective Go»:

Occasionally you’ll see code that discards the error value in order to ignore the error; this is terrible practice. Always check error returns; they’re provided for a reason.

// Bad! This code will crash if path does not exist.
fi, _ := os.Stat(path)
if fi.IsDir() {
fmt.Printf(«%s is a directoryn», path)
}

В идеале вы должны обработать ошибку, но если она вас раздражает, вы можете отключить линтер в goland (который вы все равно должны использовать):

Другие вопросы по теме

Линтеры для начинающих

Линтеры для начинающих

Красивый код с самого начала.

Линтеры для начинающих

Красивый код с самого начала.

Недавно мы писали про линтеры: как они проверяют код на ошибки и делают его более красивым. Если коротко, то линтеры работают так:

  1. Берут ваш код
  2. Форматируют его по заданным правилам.
  3. Исправляют простейшие ошибки — ставят незакрытые фигурные скобки или пропущенные точки с запятой. 
  4. Если умеют — проверяют код на более сложные ошибки и сообщают о них.

Всё это — чтобы исправлять неаккуратности за программистами. 

В этой статье — примеры линтеров, которые можно подключить хоть сейчас и получить чистый код уже к концу прочтения. 

👉 Линтеры из обзора мы проверяли в VS Code и Sublime text 3. Для запуска проверки и форматирования открытого кода в VS Code нажмите в пустом месте правой кнопкой мыши и выберите пункт «Форматировать документ с помощью…» или «Format Document With…»:

Примеры линтеров для начинающих

Beautify — линтер для HTML

Расширение для VS Code

HTML-линтер, который следит за внешним видом кода страницы и форматирует его по заданными правилам. Умеет разбивать по строкам несколько команд, если они написаны в одной строке друг за другом.

Было: стили в одну строку, комментарии на той же строке, что и команды, несколько html-тегов на строке подряд

Было: стили в одну строку, комментарии на той же строке, что и команды, несколько html-тегов на строке подряд
Стало: красиво и понятно, каждая команда и комментарий — на своей строке
Стало: красиво и понятно, каждая команда и комментарий — на своей строке

CSS

Если вы пишете не очень большой CSS-код, вам вполне хватит того же Beautify. Но если вы решили заняться стилями всерьёз и установили CSS-препроцессор, чтобы писать код ещё быстрее, посмотрите на Beautify css/sass/scss/less.

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

JavaScript

JSLint — один из самых старых и самых строгих линтеров для JavaScript. Он проверяет вообще всё: 

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

Если ваш код проверил JSLint и не нашёл ни одной ошибки — поздравляем, вы постигли JS-дзен.

В Sublime Text 3 JSLint подсвечивает строки с ошибкой и даёт подробное описание, что именно здесь не так

В Sublime Text 3 JSLint подсвечивает строки с ошибкой и даёт подробное описание, что именно здесь не так

JSHint работает почти точно так же, как и предыдущий линтер, но проверяет менее строго. Идеальный инструмент для тех, кто только начинает писать код — он покажет критичные ошибки и не будет требовать соблюдения всех канонов языка JavaScript.

JSHint может показать все ошибки прямо в окне редактора кода

JSHint может показать все ошибки прямо в окне редактора кода

PyLint — линтер для Python

Pylint.org — самый популярный линтер для Python, который проверяет почти всё:

  • используется ли модуль, который подключили в самом начале;
  • длину строк;
  • как объявляются переменные и функции;
  • правильно ли используются аргументы при вызове;
  • синтаксические ошибки;
  • как используются типы данных;
  • нет ли логических ошибок в коде, которые могут привести к непредсказуемому результату.

Если вам нужно что-то проверить в коде, скорее всего, PyLint сможет вам помочь.

Если нажать на строчку с ошибкой, курсор перейдёт к нужному участку кода

Получите ИТ-профессию

В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.

Начать карьеру в ИТ

Получите ИТ-профессию
Получите ИТ-профессию
Получите ИТ-профессию
Получите ИТ-профессию

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Light alloy выдает ошибку
  • Life v7s plus ошибки