将字符串作为文件传递给rubocop

时间:2015-03-05 19:42:12

标签: python git bash unix

我正在python中编写一个git-hook,它将文件推送到存储库,如果文件没有通过linting要求,则拒绝推送。我已经使用php代码嗅探器为php写了一个类似的钩子,代码如下:

php_cs = subprocess.Popen(['phpcs', '--standard=' + self._standard], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = php_cs.communicate(input="file contents".encode('utf-8'))

此代码适用于php_cs,但同样适用:

cat file.php | phpcs

据我所知,这是所有的python代码都在做。我想使用RuboCop为ruby做一些非常相似的事情。

使用与phpcs非常相似的python代码,rubocop版本如下:

  rubo_cop = subprocess.Popen(['RuboCop'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  out, err = rubo_cop.communicate(input="file contents".encode('utf-8'))

这种情况下的输出如下:

enter image description here

这表明rubocop不理解这个输入的方式与phpcs理解的原因相同:

 cat file.rb | rubocop 

不适用于rubocop

我的问题如何将字符串传递给命令,以便将其视为文件?

1 个答案:

答案 0 :(得分:2)

尝试cat file.php | xargs rubocop

这是我为rails项目提供的预提交脚本 https://gist.github.com/brendandeere/70510a0bc0cb54fd8427