Bundler
Bundler/DuplicatedGem
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
启用 |
是 |
否 |
0.46 |
1.40 |
Gem 的要求应在 Gemfile 中只列出一次。
示例
# bad
gem 'rubocop'
gem 'rubocop'
# bad
group :development do
gem 'rubocop'
end
group :test do
gem 'rubocop'
end
# good
group :development, :test do
gem 'rubocop'
end
# good
gem 'rubocop', groups: [:development, :test]
# good - conditional declaration
if Dir.exist?(local)
gem 'rubocop', path: local
elsif ENV['RUBOCOP_VERSION'] == 'master'
gem 'rubocop', git: 'https://github.com/rubocop/rubocop.git'
else
gem 'rubocop', '~> 0.90.0'
end
Bundler/DuplicatedGroup
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
启用 |
是 |
否 |
1.56 |
- |
Gem 组或一组组应在 Gemfile 中只列出一次。
例如,如果围绕 group
的 source
、git
、platforms
或 path
的值不同,则不会注册任何违规。
platforms :ruby do
group :default do
gem 'openssl'
end
end
platforms :jruby do
group :default do
gem 'jruby-openssl'
end
end
示例
# bad
group :development do
gem 'rubocop'
end
group :development do
gem 'rubocop-rails'
end
# bad (same set of groups declared twice)
group :development, :test do
gem 'rubocop'
end
group :test, :development do
gem 'rspec'
end
# good
group :development do
gem 'rubocop'
end
group :development, :test do
gem 'rspec'
end
# good
gem 'rubocop', groups: [:development, :test]
gem 'rspec', groups: [:development, :test]
Bundler/GemComment
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
已禁用 |
是 |
否 |
0.59 |
0.85 |
Gemfile 中的每个 gem 应包含一个注释,解释其在项目中的用途,或其版本或来源的原因。
可选的 "OnlyFor" 配置数组可用于仅在 gem 使用某些选项或具有版本说明符时注册违规。
当包含 "version_specifiers" 时,如果 gem 具有任何版本说明符,则会强制执行注释。
当包含 "restrictive_version_specifiers" 时,如果 gem 具有阻止 gem 版本的版本说明符,则会强制执行注释。
对于数组中的任何其他值,如果存在同名的选项,则会强制对 gem 执行注释。一个有用的用例是在使用更改 gem 来源的选项时强制执行注释。
-
bitbucket
-
gist
-
git
-
github
-
source
有关 Bundler 支持的所有选项的完整列表,请参阅 https://bundler.rubygems.org.cn/man/gemfile.5.html 。
Bundler/GemFilename
Bundler/GemVersion
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
已禁用 |
是 |
否 |
1.14 |
- |
强制 Gem 版本规范或提交引用(分支、引用或标签)是必需的还是禁止的。
示例
EnforcedStyle: required (默认)
# bad
gem 'rubocop'
# good
gem 'rubocop', '~> 1.12'
# good
gem 'rubocop', '>= 1.10.0'
# good
gem 'rubocop', '>= 1.5.0', '< 1.10.0'
# good
gem 'rubocop', branch: 'feature-branch'
# good
gem 'rubocop', ref: '74b5bfbb2c4b6fd6cdbbc7254bd7084b36e0c85b'
# good
gem 'rubocop', tag: 'v1.17.0'
EnforcedStyle: forbidden
# good
gem 'rubocop'
# bad
gem 'rubocop', '~> 1.12'
# bad
gem 'rubocop', '>= 1.10.0'
# bad
gem 'rubocop', '>= 1.5.0', '< 1.10.0'
# bad
gem 'rubocop', branch: 'feature-branch'
# bad
gem 'rubocop', ref: '74b5bfbb2c4b6fd6cdbbc7254bd7084b36e0c85b'
# bad
gem 'rubocop', tag: 'v1.17.0'
Bundler/InsecureProtocolSource
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
启用 |
是 |
始终 |
0.50 |
1.40 |
将符号参数传递给 source
(例如 source :rubygems
)已弃用,因为它们默认使用 HTTP 请求。如果可能,请改为指定 'https://rubygems.org.cn'
,或者如果不行,请指定 'https://rubygems.org.cn'
。
自动更正时,此 cop 将用 'https://rubygems.org.cn'
替换符号参数。
此 cop 不会替换使用 http://
的现有源。这在 HTTPS 不可用的情况下可能是必要的。例如,在通过内联网使用内部 gem 服务器时,或在禁止 HTTPS 时。但是,您应该尽可能强烈地首选 https://
,因为它更安全。
如果您不允许 http://
,请将 false
设置为 AllowHttpProtocol
。此选项默认情况下为 true
,以确保安全自动更正。