Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
rubocop rspec ruby2.4-严格规则多链路布局和命名主体冲突_Ruby_Rspec_Puppet_Lint_Rubocop - Fatal编程技术网

rubocop rspec ruby2.4-严格规则多链路布局和命名主体冲突

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多个线头错误需要修复。分布在多个文件和模块中。所以我需要一个实用的直接解决方案。我知道这会很费时。但我不想让

我有以下rspec ruby代码。我正在测试一些木偶模块。它抛出了一个脱毛错误

块体表达式与块开始位于同一行。(约定:布局/多块布局)

我可以使用
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