RESPUESTA actualizada, 2017: Sí. Use ESLint. http://eslint.org
Además de JSLint (ya mencionada en Flash Sheridan's answer) y el Closure compiler (anteriormente mencionado en awhyte's answer) He También he recibido una gran cantidad de beneficios de correr JSHint y PHP CodeSniffer. A partir de 2012, las cuatro herramientas son de código abierto gratuito y tienen una gran comunidad de desarrolladores activa detrás de ellas. Son todas diferentes entre sí (y creo que, complementaria) en los tipos de controles que realizan:
JSLint fue diseñado para ser, y sigue siendo la herramienta pelusa personal de Douglas Crockford. Se envía con un gran gran conjunto de reglas - de Crockford, constantly updated como él continues to learn sobre JavaScript y sus peligros. JSLint es highly opinionated y esto generalmente es seen as a good thing. Por lo tanto hay (intencionalmente) un limited amount que puede hacer para configurar o deshabilitar reglas individuales. Pero esto puede dificultar la aplicación de JSLint al código heredado.
JSHint es muy similar a JSLint (de hecho began life como JSLint tenedor) pero es más fácil/posible configure or disable todos los cheques de JSLint a través de las opciones de línea de comandos o mediante un .jshintrc
file.
Me gusta particularmente que puedo decirle a JSHint que informe todos los de los errores en un archivo, incluso si hay cientos de errores. Por el contrario, aunque JSLint tiene una opción de configuración maxerr
, en general se rescatará relativamente temprano cuando intente procesar archivos que contengan grandes cantidades de errores.
El compilador de cierre es muy útil, ya que, si el código no compilará con cierre, puede sentirse muy seguro de dicho código es profundamente manguera de alguna manera fundamental. compilación de cierre es posiblemente lo más parecido que hay en el mundo JS a una comprobación de sintaxis "intérprete" como php -l
o ruby -c
cierre también warns you about potential issues tales como parámetros faltantes y las variables no declaradas o redefinidos. Si usted no está viendo las advertencias que se pueden esperar, intente aumentar el nivel de advertencia invocando Cierre con una opción de --warning_level VERBOSE
PHP CodeSniffercan parse JavaScript, así como PHP y CSS. CodeSniffer se envía con varios estándares de codificación diferentes (por ejemplo, phpcs -i
para verlos) que incluyen muchos olfactos útiles para el código JavaScript, incluidos los controles contra inline control structures y superfluous whitespace.
Aquí hay un list of JavaScript sniffs disponible en PHP CodeSniffer a partir de la versión 1.3.6 y aquí está un custom ruleset that would allow you to run them all at once. Usando reglas personalizadas, es fácil de pick and choose the rules que desea aplicar. Y puede incluso write your own sniffs si quiere imponer un "estilo de casa" particular que no se admite de inmediato. Afaik CodeSniffer es la única herramienta de las cuatro mencionadas aquí que admite la personalización y la creación de nuevas reglas de análisis estático. Sin embargo, una advertencia: CodeSniffer es también el que funciona más lentamente con cualquiera de las herramientas mencionadas.
ahora un día mecanografiado es tu amigo - admite la comprobación de tipo implícita de javascript y si quieres ir al 100% puedes escribir jsdoc3 o anotaciones de cierre de google e inferirá tipos desde allí. Los editores como vscode o webstorm lo admiten de fábrica: https://github.com/Microsoft/TypeScript/wiki/Type-Checking-JavaScript-Files – cancerbero