2011-04-20 15 views
8

¿Hay alguna forma de detectar automáticamente infracciones de I18N en un proyecto de Grails? Por ejemplo,Cómo detectar automáticamente infracciones I18N

<td valign="top" class="name"><label for="enabled">Enabled:</label></td> 

quiere marcar porque no está utilizando <g:message> para obtener el valor de la etiqueta.

Sería bueno si codenarc tuviera una regla para esto, pero no creo que sí.

+0

Repaso muchos códigos para problemas i18n y l10n, y solo tengo algunas expresiones regulares a mano. Muchos son por idioma. – Ethan

Respuesta

1

También he buscado una prueba de calidad de código así y todavía tengo que encontrar una.

La implementación de este debería ser ser bastante trivial: si todo el contenido de un GSP debe aplicarse a través de etiquetas, su GSP debe consistir únicamente en nodos de elementos y nodos de texto.

Este problema es predominantemente un problema XML: ¿cómo verifica un conjunto de documentos XML y marca aquellos que contienen nodos de texto?

Suponiendo que puede importar org.codehaus.groovy.grails.commons.GrailsResourceUtils en una regla codenarc, puede usar la propiedad VIEWS_DIR_PATH para determinar dónde viven todos los archivos GSP.

A partir de ahí, el proceso de alto nivel que se necesita es:

  1. construir una colección de todos los archivos del SGP en la aplicación
  2. Para cada archivo, cargar el contenido en un analizador XML (Java tiene montón) y compruebe el tipo de nodo para cada nodo, marcar los archivos que contienen los nodos de texto

Soy consciente de que esta es una solución muy alto nivel, pero conceptualmente debería funcionar.

+0

¿Los GSP son XML válido? – Armand