以编程方式将Rubocop格式化程序与stdin / stdout

我正在尝试将Rubocop的格式化程序集成到编辑器中:给定一些Ruby代码作为输入,返回代表等效格式代码的字符串。我正在考虑Rubocop的帮助建议的-s选项:

  

-s FILE-来自STDIN的管道源,在攻击报告中使用FILE。这对于编辑器集成很有用。

在终端中,以下命令成功读取输入内容并将已格式化的输出打印到stdout:

cat some_file.rb | rubocop -a -f fi -s some_file.rb

但是,我无法使用Rubocop API以编程方式复制类似内容。我希望以某种方式将输入提供给RuboCop::Runner,但是,在到达这一点之前,只需解析选项已挂起:

require 'rubocop'

input = "some_var    = 'hello'"
options,paths = RuboCop::Options.new.parse(['-a','-f','fi','-s','some_file.rb'])
runner = RuboCop::Runner.new(options,RuboCop::ConfigStore.new)
...

当然,一种选择是删除-s并在临时文件上进行操作,但这会增加复杂性并且效率较低。

如何使用API​​方便地生成格式化输出?

yin345044553 回答:以编程方式将Rubocop格式化程序与stdin / stdout

只需将RuboCop称为外部进程,例如使用Open3.capture2

stdout_str,status = Open3.capture2("rubocop -a -f fi -s some_file.rb",input)
本文链接:https://www.f2er.com/3132725.html

大家都在问