如何自动查找I18N违规行为

Bra*_*ads 8 grails internationalization codenarc

反正是否在Grails项目中自动发现I18N违规?例如,

<td valign="top" class="name"><label for="enabled">Enabled:</label></td>
Run Code Online (Sandbox Code Playgroud)

应该被标记,因为它不<g:message>用于获取标签值.

如果codenarc有这个规则会很好,但我不认为这样做.

Jon*_*ram 1

我也曾寻找过这样的代码质量测试,但尚未找到。

实现这一点应该相当简单 - 如果 GSP 中的所有文本内容都需要通过标签应用,那么您的 GSP 应完全由元素节点组成,没有文本节点。

问题的症结主要是 XML 问题:如何检查一组 XML 文档并标记那些包含文本节点的文档?

假设您可以导入org.codehaus.groovy.grails.commons.GrailsResourceUtilscodenarc 规则,您可以使用该VIEWS_DIR_PATH属性来确定所有 GSP 文件所在的位置。

从那里,您需要的高级流程是:

  1. 构建应用程序中所有 GSP 文件的集合
  2. 对于每个文件,将内容加载到 XML 解析器(Java 有很多)并检查每个节点的节点类型,标记那些包含文本节点的文件

我很欣赏这是一个非常高级的解决方案,但从概念上讲它应该可行。