1

当告诉 rails 脚手架控制器生成 rspec 测试时,生成的文件不遵循Ruby 样式指南,因此rubocop会在这些文件上抛出错误。

只有几个“警察”失败了。Style/HashSyntax、Style/StringLiterals、Style/MethodCallParentheses、Style/SpaceInsideHashLiteralBraces、Style/Blocks。

我确实了解其中一些警察只是样式偏好,例如 Style/StringLiterals (当您不需要字符串插值或特殊符号时,首选单引号字符串。)

不过,我希望我的测试符合 rubocop。有谁知道用符合 Ruby Style Guide / rubocops Cops 的模板替换 rspec-rails 模板(例如controller_spec.rb )的 gem?或者解决我的问题的任何未记录(或记录)的 rspec / rspec-rails 功能?

解决方法正在运行

bundle exec rubocop spec --auto-correct

生成新的测试文件后,但我宁愿省略这一步。

非常感谢任何帮助或指示!

4

2 回答 2

3

我建议向 RSpec 提出拉取请求,将其模板更改为符合 Rubocop 标准。

于 2014-09-23T16:21:28.547 回答
0

我只是让 rubocop 自动更正这样的东西。我通常有一个脚本script/rubocop-autocorrect.rb或其他东西,我明确列出所有应该纠正的警察。我从来没有遇到过它引入的错误;只有一种情况是 rubocop 未能纠正某些问题(在一个非常奇怪的情况下与替换有关or||。它只是什么也没做,它没有破坏代码。

完整的脚本看起来像这样(没什么特别的,只是我的喜好):

bundle exec rubocop -F -a --only \
Style/TrailingBlankLines,\
Style/TrailingWhitespace,\
Style/SymbolProc,\
Style/SpaceInsideHashLiteralBraces,\
Style/SpaceInsideBrackets,\
Style/SpaceInsideBlockBraces,\
Style/SpaceInsideParens,\
Style/SpaceAroundEqualsInParameterDefault,\
Style/Semicolon,\
Style/StringLiterals,\
Style/SpaceAfterComma,\
Style/SpaceAroundOperators,\
Style/AlignHash,\
Style/AlignParameters,\
Style/AndOr,\
Style/EmptyLines,\
Style/HashSyntax,\
Style/RedundantSelf,\
Style/ColonMethodCall,\
Style/IndentationWidth,\
Style/MultilineIfThen,\
Style/NegatedIf,\
Style/PercentLiteralDelimiters,\
Style/BarePercentLiterals,\
Style/BlockEndNewline,\
Style/CollectionMethods,\
Style/CommentIndentation,\
Style/IndentationConsistency,\
Style/ParenthesesAroundCondition,\
Style/CaseIndentation,\
Lint/EndAlignment,\
Style/LeadingCommentSpace,\
Style/MutableConstant,\
Style/NumericLiteralPrefix,\
Style/MultilineIfModifier,\
Style/TrailingCommaInLiteral,\
Style/IndentArray,\
Style/AlignArray,\
Style/MultilineArrayBraceLayout,\
Style/ElseAlignment,\
Lint/EndAlignment,\
Style/MultilineMethodCallBraceLayout,\
Style/ClosingParenthesisIndentation,\
Style/MultilineHashBraceLayout,\
Lint/BlockAlignment,\
Style/IndentHash,\
Style/LeadingCommentSpace,\
Style/SpaceBeforeComma,\
Style/SpaceBeforeSemicolon,\
Style/Tab,\
Style/MultilineMethodCallIndentation
于 2016-01-14T20:32:08.950 回答