2012-03-14 63 views
10

我想要一个git pre-commit钩子对所有Ruby代码执行语法检查;在GitHub上有一个https://github.com/cypher/git-ruby-syntax-check如何语法检查(而不是渲染)Rails 3 ERB模板文件?

它试图通过erb -x检查.erb文件,将它们转换为Ruby代码,然后将输出传递到ruby -c进行语法检查。不幸的是,Rails 3引入了一个自定义的ERB解析器,该解析器是incompatible与Ruby的标准ERB,所以pre-commit钩子在没有的时候发现错误。

是否有一些相当于erb -x,将从Rails 3 ERB文件输出Ruby代码?

+1

如果您测试所有视图,则不需要此检查验证。 – shingara 2012-03-14 08:56:27

+0

@shingara我不同意。这*是一种测试你的视图的方式,其他测试不能。无效的标记可能会通过您的功能测试,因为浏览器会为您“修复”它,但仍会留下微妙的错误或导致未来的问题,因为没有100%全面的测试。 – antinome 2015-07-30 17:09:37

+0

@shingara或者你也许在说“渲染后验证,而不是之前”而不是“根本不验证”?在这种情况下,我明白了你的观点(我可以看到任何一种说法:-) – antinome 2015-07-30 17:21:04

回答

10

我还没有挖掘到这两者中的任何一个,但你可以尝试rails-erb-checkGit project)或这blog entry。我同意shingara,但博客文章描述了这种情况,这是有用的,我想知道你是否处于类似的位置:

散居现在是非常流畅的。这意味着我们有一些绿色的 测试,一些缺少测试和其他测试意图(不是 实施)。在一个理想的世界中,我想测试用例将覆盖我们所有的基础...

直到那时,我在fork中添加了一个新的任务check_syntax:all。此 进一步分解为子任务check_syntax:erb, check_syntax:haml,check_syntax:haml_ruby,check_syntax:sass和 check_syntax:yaml。

2

如果您得到一个“参数列表太长错误”的rails-erb-check,您可以试试rails-erb-lint扫描您当前的视图文件夹。

+1

与已接受的答案相比,此工具有很多意义,因为它提供了扫描整个文件夹的功能,而不是一次扫描单个文件。 – Swaps 2017-09-18 14:05:00

+0

它维护得很好。我们至少有两个人管理这个项目。无论它多么微小,它都会工作。 – kgpdeveloper 2017-09-23 09:49:12