rubocop rspec ruby2.4-严格规则多链路布局和命名主体冲突
我有以下rspec ruby代码。我正在测试一些木偶模块。它抛出了一个脱毛错误rubocop rspec ruby2.4-严格规则多链路布局和命名主体冲突,ruby,rspec,puppet,lint,rubocop,Ruby,Rspec,Puppet,Lint,Rubocop,我有以下rspec ruby代码。我正在测试一些木偶模块。它抛出了一个脱毛错误 块体表达式与块开始位于同一行。(约定:布局/多块布局) 我可以使用rubocop-a来修复它。但是,这将根据以下内容更正代码。然后得到一个不同的linting错误 如果需要明确引用,请命名测试主题。(约定:RSpec/NamedSubject) 我如何为ruby-2.4-strict解决这个问题?我有10000多个线头错误需要修复。分布在多个文件和模块中。所以我需要一个实用的直接解决方案。我知道这会很费时。但我不想让
块体表达式与块开始位于同一行。(约定:布局/多块布局)
我可以使用rubocop-a
来修复它。但是,这将根据以下内容更正代码。然后得到一个不同的linting错误
如果需要明确引用,请命名测试主题。(约定:RSpec/NamedSubject)
我如何为ruby-2.4-strict解决这个问题?我有10000多个线头错误需要修复。分布在多个文件和模块中。所以我需要一个实用的直接解决方案。我知道这会很费时。但我不想让它在今年剩下的时间里完成。一个更简单、更直接的修正
块体表达式与块开始位于同一行。
(约定:布局/多块布局)
这将涉及:
it {
is_expected.to contain_registry_value('HKLM\SOFTWARE\Policies\Microsoft\something\something\something\000000\Functions').with(
ensure: 'present',
type: 'string',
data: 'ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521,ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521 ',
)
}
规则是多行块的开始和结束分隔符必须与块体中的任何内容(空格除外)显示在单独的行上
这也将引起人们的关注,但其修正更为明显。linter希望您使用do
和end
来分隔多行块,因此这是您最终想要的:
it do
is_expected.to contain_registry_value('HKLM\SOFTWARE\Policies\Microsoft\something\something\something\000000\Functions').with(
ensure: 'present',
type: 'string',
data: 'ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521,ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521 ',
)
end
甚至在这里:
it do
is_expected.to contain_registry_value('HKLM\SOFTWARE\Policies\Microsoft\something\something\something\000000\Functions')
.with(
ensure: 'present',
type: 'string',
data: 'ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521,ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521 ',
)
end
我发现最后一个更具可读性,特别是如果你想链接其他谓词。它仍然会抱怨主题需要明确找到一个不那么理想的解决方案,使其全部为一行,而不是多行。然而,就可读性而言,并不那么令人满意:-|@MonteCristo,无论rubocop告诉您什么,我所呈现的形式都是傀儡rspec测试的惯用形式。此外,正如
pdk validate
运行的那样,rubocop并不抱怨需要明确的主题。因此,我假设您没有使用PDK,但是您应该能够像PDK那样调整您的rubocop配置。或者将您的模块转换为PDK,让它来处理。
it do
is_expected.to contain_registry_value('HKLM\SOFTWARE\Policies\Microsoft\something\something\something\000000\Functions').with(
ensure: 'present',
type: 'string',
data: 'ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521,ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521 ',
)
end
it do
is_expected.to contain_registry_value('HKLM\SOFTWARE\Policies\Microsoft\something\something\something\000000\Functions')
.with(
ensure: 'present',
type: 'string',
data: 'ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521,ABC_ECDHE_JKL_WITH_ABC_123_RET_ABC_384_521 ',
)
end