sublimelinter-rubocop默认仅做代码风格与反模式检查,不执行静态安全分析;需手动安装rubocop-security、在.rubocop.yml中显式require并启用security类规则,且sublimelinter配置须指定bundle exec rubocop路径,缺一不可。

SublimeLinter-rubocop 能做静态安全分析,但默认不干这事——它只管风格和常见反模式,真要查 SQL 注入、命令执行、参数污染这类安全问题,得手动启用特定 RuboCop 插件并配置规则。
rubocop-security 插件必须显式启用
RuboCop 原生不包含安全检查能力,rubocop-security 是独立 gem,需额外安装并声明在配置中:
• 全局安装:gem install rubocop-security
• 项目级更稳妥:在 Gemfile 中加 gem 'rubocop-security', require: false,再 bundle install
• 配置文件 .rubocop.yml 里必须写明扩展:
require:<br> - rubocop-security
• 否则
SublimeLinter-rubocop 完全感知不到这些规则,编辑器里不会报任何安全相关警告默认 .rubocop.yml 不含安全规则
新生成的.rubocop.yml(比如用 rubocop --init)只启用 Layout、Style、Metric 等常规类目,Security 类规则全部被禁用:
• 检查配置里是否有 Security/ 开头的条目,例如 Security/Eval、Security/YAMLLoad
• 若没有,需手动添加并设为 Enabled: true:
Security/Eval:<br> Enabled: true
• 注意:部分规则(如
Security/MarshalLoad)在 Rails 7+ 默认已启用,但老项目或自定义配置常遗漏SublimeLinter-rubocop 不自动识别 bundle exec
SublimeLinter-rubocop 默认调用全局 rubocop 命令,而项目依赖的 rubocop-security 很可能只装在 bundle 里:
• 编辑器报错 cannot load such file -- rubocop-security 是典型症状
• 解决方法:在 Sublime 的 SublimeLinter.sublime-settings 中指定执行路径:
"rubocop": {<br> "executable": ["bundle", "exec", "rubocop"]<br>}
• 切勿只填
["bundle", "exec"] —— rubocop 必须作为第三个参数显式写出rails/rails_best_practices 规则不兼容 rubocop-security
有些团队会混用rails_best_practices 或自定义 cop,但它们和 rubocop-security 存在冲突:
• 例如 Security/MissingCSRFToken 和 Rails/OutputSafety 可能对同一行重复报错
• 更严重的是:某些旧版 rubocop-rails(rubocop-security(>2.0)因 AST 解析差异导致崩溃
• 实操建议:统一用 rubocop-rails ≥ 2.16 + rubocop-security ≥ 2.20,并在 .rubocop.yml 顶部加
require:<br> - rubocop-rails<br> - rubocop-security
真正起作用的安全检查,靠的是你亲手把 rubocop-security 塞进 bundle、写进配置、告诉 SublimeLinter 去哪找它——漏掉任意一环,编辑器里就只剩风格提示,跟安全无关。











