ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

RuboCop 0.35.0:团队配置终于能发 gem 了,升级前必看的 3 个边界

RuboCop 0.35.0:团队配置终于能发 gem 了,升级前必看的 3 个边界 RuboCop 0.35.0团队配置终于能发 gem 了升级前必看的 3 个边界【免费下载链接】rubocopA Ruby static code analyzer and formatter, based on the community Ruby style guide.项目地址: https://gitcode.com/GitHub_Trending/rub/rubocopRuboCop 0.35.0 是一次以配置体系扩展和稳定性修复为主的增量版本共 29 项新功能、34 项修复。如果你用 gem 或远程文件给团队分发共享配置或 CI 里跑 --auto-correct值得细看。只跑默认配置的个人用户可直接跳到决策清单。升级前 30 秒速判变化类型影响面你需要做什么新增inherit_gem与远程配置继承维护共享风格配置的团队无需操作想 gem 分发时主动使用4 个新 Cop 默认开启日常 lint 输出先统计违规数再决定去留缓存按版本隔离、默认目录改为 per-userCI、共享服务器、多 Ruby 版本用户建议清一次旧缓存8 处自动纠正语义修复--auto-correct 用户无需操作本版本修掉了旧误改ExtraDetails等新配置项想让消息带更多信息的人默认关闭按需开启核心变化按你的使用场景看团队配置分发inherit_gem 配置改变了玩法痛点共享一套配置以前只能复制文件或者多维护一个 submodule。每次改动都要同步到所有仓库很折腾。0.35.0 给出inherit_gem直接引用已安装 gem 里打包的配置一行搞定inherit_gem: my_company_rubocop: config/rubocop.yml逻辑在 lib/rubocop/config_loader_resolver.rb 里gem 路径被展开后插到inherit_from头部本地配置始终拥有最高优先级。两个约束要记牢。一是禁止从 rubocop 本体 gem 继承会直接抛 ArgumentError。二是同一个 gem 可用数组传多个配置路径逆序展开。还配了两项能力inherit_from现在支持远程 URL团队配置可以托管在自家服务器StyleGuide参数允许所有 cop 在本地配置里自定义把违规消息关联到你们内部文档。消息的最终拼接逻辑在 lib/rubocop/cop/message_annotator.rb细节文本在ExtraDetails或-E开启后追加到每条消息末尾。怎么做把风格配置打成 gem嫌重就至少把远程 URL 指向一个文件。RuboCop 0.35.0 哪几条新规则会突然出现在你 PR 里痛点升级后 PR 被新违规刷屏大家一脸懵。4 个新 Cop 默认开启。第一个是Style/StabbyLambdaParentheses管 stabby lambda 参数括号默认风格require_parentheses反向风格也支持。实现见 lib/rubocop/cop/style/stabby_lambda_parentheses.rb# bad默认风格 -a, b { a b } # good -(a, b) { a b }另外三个Style/NestedModifier禁止do_something if c1 if c2这种行尾连写修饰符Performance/FixedSize对[1, 2, 3].length这类固定大小字面量调length/size/count告警Rails 扩展新增Rails/PluralizationGrammar3.day.ago应写成3.days.ago。还有两个老 Cop 变严Style/TrailingUnderscoreVariable现在会对*_登记 offense新配置AllowNamedUnderscoreVariables默认false即foo_这类命名下划线变量默认不被移除Lint/LiteralInCondition把符号条件也纳入检查。四个First*ElementLineBreak换行 Cop数组、哈希、参数、形参的首元素必须换行默认全部Enabled: false不启用就不会触发。当前仓库快照里它们归在 Layout 部门见 config/default.yml 中Layout/FirstArrayElementLineBreak等条目VersionAdded标注 0.49。怎么做先用rubocop --only跑这四个默认开启的 Cop看违规量再决定改代码还是关 Cop。自动纠正哪些改写以前会改坏代码现在修了痛点以前 --auto-correct 会把代码改成另一层意思diff 要人工盯着看。34 项修复里8 项直接属于自动纠正不改语义这一类Style/IfUnlessModifier改写时按运算符优先级补括号不再改变原意#2323Style/ParallelAssignment必要时重排赋值顺序避免破坏依赖#2344Style/DotPosition遇到点号和选择器之间有行注释或空行时不再纠正旧行为会直接改坏调用#2296Style/EachWithObject块内给累加器重新赋值时不再替换reduce#2321Style/MethodCallParentheses不再对obj.method || func()报错#2393另有Performance/Detect遇游离换行崩溃#2295、Style/SingleLineMethods空方法纠正#2286、Style/IndentationWidth纯空白行纠正#2287三处。功能侧还有一条其实是自动纠正行为变化Style/TrailingComma不再给作为唯一参数的多行方法链添尾逗号#2369。怎么做以前被自动纠正坑过的这版可以放开手批量跑 --auto-correct。升级边界缓存、CLI 参数和几个静默默认痛点这类变化不提示也不报错只会在 CI 里悄悄变脸。结果缓存不再跨 Ruby 版本共享#2284出错或崩溃的结果不写入缓存#2292。默认缓存目录同时改到 per-user 目录依赖固定缓存路径的部署要检查--only Lint/Syntax与--except Lint/Syntax现在解析正确#2324--auto-gen-config解除限制可搭配任意命令行选项#2194$HOME/.rubocop_todo.yml里的相对Exclude路径改按当前目录解析#2261自动生成的 todo 文件会复制默认Exclude列表Lint/Eval对无插值的字符串字面量不再提示安全风险Style/Encoding在首行是 shebang 时把编码注释放到第二行#2356。怎么做升级后带--cache完整跑一遍和旧版本输出 diff 一次。RuboCop 0.35.0 升级注意事项决策清单确认Style/StabbyLambdaParentheses的EnforcedStyle与团队习惯一致喜欢无括号要显式改require_no_parentheses有旧缓存且团队使用多个 Ruby 版本升级后清一次缓存本版本修复跨版本污染 #2284仅当团队通过 gem 分发共享配置时试点inherit_gem验证本地配置确实覆盖 gem 内配置四个First*ElementLineBreakCop 默认不生效想要这条规范需显式Enabled: trueExtraDetails默认关闭想让消息展示 Cop 的Details文本时在配置开启或用-E临时开启仅当 CI 依赖固定缓存路径时确认新的 per-user 缓存目录不影响流水线配置差异速查只列本版本新增或行为变化的项配置项默认值一句话作用建议AllCops: ExtraDetailsfalseoffense 消息追加 cop 的Details文本视团队规范开启临时可用-E顶层inherit_gem无从已安装 gem 继承配置禁止 rubocop 本体公司级配置分发时开启StyleGuide任意 cop各 cop 自带关联自定义风格指南配-S显示建议补上Style/StabbyLambdaParentheses: EnforcedStylerequire_parenthesesstabby lambda 参数括号风格按团队规范选Style/TrailingUnderscoreVariable: AllowNamedUnderscoreVariablesfalse是否允许移除命名下划线变量视规范决定Lint/UnusedMethodArgument: IgnoreEmptyMethods新增忽略空方法体中的未使用参数减少误报可开启Lint/UnusedBlockArgument: IgnoreEmptyBlocks新增忽略空块中的未使用参数减少误报可开启Lint/UnusedMethodArgument: AllowKeywordArguments新增跳过关键字参数检查视规范决定Style/PredicateName: NameWhitelist新增白名单已知谓词名#1825有固定误报时开启Style/BlockDelimiters: braces_for_chaining新增风格块返回值被链式调用时强制{}切风格时决定Style/MethodDefParentheses: require_no_parentheses_except_multiline新增风格单行方法定义禁用括号切风格时决定Style/IndentHash: align_braces新增风格首键缩进对齐左花括号#1608切风格时决定Layout/First*ElementLineBreak系列Enabled: false多行结构首元素必须换行视团队规范显式开启写在最后RuboCop 0.35.0 把配置分发从复制文件推进到gem 加远程托管也把 offense 消息从只有规则名推进到带细节和指南链接同时让 --auto-correct 第一次变得可信。整体没有破坏性变更新 Cop 可以逐步放开建议直接升级。【免费下载链接】rubocopA Ruby static code analyzer and formatter, based on the community Ruby style guide.项目地址: https://gitcode.com/GitHub_Trending/rub/rubocop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表