Encontrar dependencies de símbolos en el código fuente

Hoy tuve un error que me hizo preguntarme acerca de las herramientas para verificar la consistencia del código fuente. Primero, el error:

Mi selector de jQuery esperaba .attached_reports , pero la plantilla HTML creaba un div con attached-reports class. Lo que sucedió es que nuestro celoso diseñador decidió estandarizar todos los nombres de class para usar guiones en lugar de guiones bajos, y nuestro código se rompió como resultado.

La pregunta: ¿Existe alguna herramienta o metodología que pueda analizar el código fuente y asociar cada ocurrencia de attached-reports ? Entonces, si se cambia uno de los símbolos (p. Ej., Al confirmar el control de versión), ¿puede alertar al equipo del cambio?

Lo que quiere es un comprobador de coinheritance de lenguaje cruzado, que pueda verificar estáticamente los errores que puedan ocurrir en el time de ejecución.

Para hacer esto, necesita una herramienta que pueda procesar todos los idiomas en cuestión (tiene dos: Javascript? [Para Jquery] con references especiales a templates HTML, y los lenguajes de plantilla HTML (que no es exactamente HTML). saber que el código JavaScript hará reference a las templates usando un nombre (presumiblemente esto es solo una cadena; ¿cómo sabes que el nombre de la plantilla no se calcula mediante algún process arcano?), y que se hará reference a las inputs de plantilla HTML (si hay una ranura de la plantilla que no está referenceda, ¿está bien?)

El mundo está lleno de pequeños lenguajes graciosos y restricciones más divertidas dentro y entre ellos (y está empeorando a medida que las personas inventan más DSL y reglas de integración). Es poco probable que encuentre una herramienta list para usar para cada combinación.

Nuestro kit de herramientas de reingeniería de software DMS está diseñado para aceptar nuevas descripciones de idiomas o variaciones dialectales fácilmente (para que pueda definir la variante de plantilla HTML) y analizadores personalizados (para que pueda detectar violaciones). [DMS ya tiene un establo de Interfaces de lenguaje convencionales y no convencionales , incluyendo una para JavaScript . DMS es escalable en varias dimensiones; uno es el número de idiomas que puede procesar al mismo time … como "dos" como en su caso.

DMS le permite a uno codificar analizadores o transformadores personalizados. Por supuesto, cualquier análisis que se implemente está sujeto a restricciones de computación; es poco probable que si el nombre de la plantilla se calcula mediante un código JavaScript arcano, la herramienta pueda determinar si ese nombre calculado coincide con algo en las templates.