RuboCop Naming / FileName cop жалуется на стандартные файлы, когда ExpectMatchingDefinition: true - PullRequest
0 голосов
/ 09 мая 2020

Я искал информацию об этом в документации Rubocop, но не могу понять, что происходит.

Начиная с fre sh Rails-приложения (6.0.2.2) под названием «Foo» , Я добавляю следующие драгоценные камни в свой Gemfile и устанавливаю их:

gem 'rubocop', '~> 0.80.0', require: false
gem 'rubocop-checkstyle_formatter', require: false
gem 'rubocop-rails_config', require: false

В настоящее время разрешенная версия RuboCop (с учетом имеющихся у меня ограничений версии) - 0.80.1.

Затем я добавляю простая модель: rails g model user name:string, которая создает app/models/user.rb. Запустите RuboCop только для этого файла без какого-либо настраиваемого файла конфигурации, и он только жалуется на отсутствие замороженного строкового литерала. Я делаю это в контексте моего пакета с bundle exec rubocop app/models/user.rb и получаю следующее:

Inspecting 1 file
C

Offenses:

app/models/user.rb:1:1: C: Style/FrozenStringLiteralComment: Missing frozen string literal comment.
class User < ApplicationRecord
^

Затем добавляю свой собственный .rubocop.yml файл в проект с включенным правилом, которое отличается от значения по умолчанию из стандартной конфигурации:

Naming/FileName:
  ExpectMatchingDefinition: true

При повторном запуске анализа это новое нарушение обнаруживается:

app/models/user.rb:1:1: C: Naming/FileName: user.rb should define a class or module called Foo::App::Models::User.
class User < ApplicationRecord
^

Обратите внимание, как он хочет, чтобы класс User определялся как Foo::App::Models::User. Это происходит со мной с каждым файлом, который я оцениваю. Я стер все свои драгоценные камни и даже свой Ruby и переустановил, но проблема не устранена. Странно то, что другие коллеги не могут воспроизвести проблему.

Кто-нибудь это видел? Благодарю за помощь!

1 Ответ

0 голосов
/ 02 июня 2020

Недавно мы объединили запрос pull request , который добавляет новый параметр конфигурации CheckDefinitionPathHierarchy этому копу. Если этот параметр включен, полицейский будет игнорировать путь и проверять только соответствие вашего определенного класса или модуля имени файла.

После выпуска следующей версии RuboCop вы можете обновить свой файл конфигурации до:

Naming/FileName:
  ExpectMatchingDefinition: true
  CheckDefinitionPathHierarchy: false

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...