rubocop как ты исправляешь отсутствующий магический комментарий

У меня есть библиотека кода ruby, и для поиска дефектов я запускаю

$ rubocop

И я получаю

$ rubocop
Inspecting 153 files
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCWCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCWCCCCCCCWWCCCCC

Offenses:

Gemfile:1:1: C: Missing magic comment # frozen_string_literal: true.
source "https://rubygems.org"

Какие изменения требуются в моем Gemfile, чтобы rubocop не жаловался?

2 ответа

Решение

Просто добавь

# frozen_string_literal: true

в первой строке каждого файла Ruby. Или беги

rubocop -a

разрешить Rubocop исправлять все нарушения, которые он может исправить автоматически.

Btw. Я люблю Rubocop и использую его сам, но я бы не назвал вещи, которые он находит, дефектами. Я вижу список больше как предложения или причины для обсуждения с моими коллегами.

Если вы хотите быть более конкретным и запустить rubocop только для# frozen_string_literal: true Вы можете использовать --only опция флага:

Запускайте только указанных полицейских и / или полицейских в указанных отделах.

Для просмотра этих файлов:

rubocop --only Style/FrozenStringLiteralComment

Для автозамены этих конкретных файлов используйте -a флаг (как упоминалось в предыдущем ответе):

rubocop --only Style/FrozenStringLiteralComment -a

Вы можете посмотреть другие флаги командной строки в разделе основного использования Rubocop.

Если вы хотите проигнорировать это, добавьте в свой .rubocop.yml

Style/FrozenStringLiteralComment:
  Enabled: false

Но, возможно, вы захотите узнать, что такое "Волшебный комментарий", особенно если вы используете Ruby 2.x

Попробуйте запустить Rubocop с -D опция:

rubocop -D
Inspecting 1 file
C

Offenses:

spec/rails_helper.rb:1:1: C: Style/FrozenStringLiteralComment: Missing magic comment # frozen_string_literal: true.
require 'spec_helper'
^

Добавление -D заставит Рубокопа напечатать имя полицейского, который был нарушен, в этом случае Style/FrozenStringLiteralComment, Затем вы можете найти этого полицейского в документации по Rubocop:

http://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/FrozenStringLiteralComment

Этот коп предназначен для обновления до Ruby 3.0. Это добавит комментарий # frozen_string_literal: true к началу файлов, чтобы включить замороженные строковые литералы. Замороженные строковые литералы будут по умолчанию в Ruby 3.0. Комментарий будет добавлен под комментарием к кодировке. Замороженный строковый литеральный комментарий действителен только в Ruby 2.3+.

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