2010-07-10 22 views
6

¿Existen herramientas para ayudar a los programadores que REALMENTE desean seguridad de tipo y las reglas más estrictas de un lenguaje como C# o java con javascript?Análisis de código Javascript y mejores prácticas

Por ejemplo, algo que dice analizó archivos fuente y encontró cosas como variables no declaradas o un archivo js de objetos de tipo definido como int o string?

+0

no se puede obtener la seguridad de tipo en un lenguaje de tipado dinámico por análisis estático, porque el tipo de cualquier cosa puede cambiar en cualquier lugar durante el tiempo de ejecución. – galambalazs

+0

@galamalazs no puede marcar todos los casos donde esto sucede con una herramienta. la pregunta es si existe alguna herramienta de este tipo. – reinierpost

Respuesta

5

Además de JSLint, el compilador de cierres de Google también se puede utilizar para el análisis estático de la fuente JS, y también comprueba cosas diferentes de JSLint.

Ninguna de estas herramientas proporciona exactamente lo que usted desea .. Closure Compiler intenta la comprobación de tipo si recuerdo correctamente, pero no siempre funciona (en absoluto).

Aunque estas características pueden parecer deseables desde el punto de vista de alguien que está acostumbrado a los lenguajes estrictamente tipados, a menudo veo personas que intentan usar JS como C#/Java/lo que falla en más de un nivel, y generalmente terminan con un código menos legible y peor en general. Por supuesto, este no es tu caso, pero esto es solo una observación/advertencia general a tener en cuenta.

Mi sugerencia sería abrazar la "soltura" del idioma, con tal vez el desarrollo basado en pruebas como una herramienta de asistencia de calidad (JsTestDriver).

+0

+1 para abrazar la "holgura" – galambalazs

+0

Empecé a usar JSLint. Son los bienes, cosas muy buenas. Cierre, me parece menos útil (aunque eso puede ser ignorancia). – j03m

+0

Aunque me enloquece, la flojedad, quiero decir. Por ejemplo, tengo una estructura en mi programa para estados que dice: ga.gameEvents.Idle, etc. Y en algún punto, creo que me perdí un "." cuando se ejecuta una macro y en mi código era gagameEvents.Idle. Así que me pasé 30 min tamizar a través de Chrome tratando de encontrar por qué un valor dado pasó a una función no definida. Grrr. Me vuelve un poco loco sabiendo que un compilador podría haber entendido esto. Creo que JSLint aún extrañará cosas de esta naturaleza. :( Quizás la respuesta correcta es GWT. Si no estuviera haciendo canvas html5, lo usaría. – j03m

0

Si desea comprobar las dependencias de javascript y definir una arquitectura del lado del cliente, puede usar JSAnalyse.

Le permite mantener las dependencias entre los archivos javascript bajo control al marcarlo durante la compilación. Extiende el Diagrama de capa de Visual Studio para admitir javascripts y se puede integrar fácilmente en el proceso de msbuild.