RSpec& Rubocop / Ruby风格指南

时间:2014-08-05 11:57:56

标签: rspec rubocop

当告诉rails scaffold控制器生成rspec测试时,生成的文件不会跟随Ruby Style Guide,因此rubocop会抛出错误。

只有几个"警察"失败。 Style / HashSyntax,Style / StringLiterals,Style / MethodCallParentheses,Style / SpaceInsideHashLiteralBraces,Style / Blocks。

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

尽管如此,我还是希望我的测试符合rubocop。是否有人知道一个gem替换了rspec-rails模板(例如controller_spec.rb)与那些符合Ruby Style Guide / rubocops Cops的?或者任何未记录(或记录)的rspec / rspec-rails功能可以解决我的问题?

正在进行解决方案

bundle exec rubocop spec --auto-correct

生成新的测试文件后,但我更倾向于忽略该步骤。

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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