Pregunta

Estoy acostumbrado a tener mi compilador se quejan cuando hago algo estúpido como un error tipográfico en el nombre de una variable, pero JavaScript tiene un hábito de dejar que esto pase.

Existen las herramientas de análisis estático para JavaScript?

¿Fue útil?

Solución

Estoy de acuerdo que JSLint es el mejor lugar para empezar. Tenga en cuenta que Javascript Lint es distinta de JSLint . También me sugiero revisar JSure , que en mi prueba limitada hizo mejor que cualquiera de ellos, aunque con algunas asperezas en la aplicación de la versión de Intel Mac se estrelló en el arranque para mí, aunque la versión PowerPC funcionó muy bien incluso en Intel, y la versión de Linux funcionó muy bien también. (El desarrollador, Berke Durak, dijo que había que volver a mí cuando lo arreglaron, pero no he sabido nada de él.)

No hay que esperar tanto de análisis estático como JavaScript que se obtiene de un buen corrector C. Como Durak me dijo, “cualquier análisis no trivial es muy difícil debido a la naturaleza dinámica de Javascript.”

(Otra, sólo para Mac error aún más oscura, esta vez con widget de Konfabulator de JSLint: Al arrastrar un icono de documento BBEdit en el widget mueve el documento a la basura El desarrollador, Douglas Crockford, no había probado el widget en una. Mac.)

10 Agosto 2009: Hoy en el estático Simposio Análisis , Simon Holm Jensen presentó un documento sobre < a href = "http://www.brics.dk/TAJS/" rel = "noreferrer"> Tajs: Tipo de analizador de JavaScript , escrito con Anders Møller y Peter Thiemann. El documento no menciona las herramientas anteriores, pero Jensen me dijo que la había mirado algunos de ellos y no me impresionó. El código para Tajs debe estar disponible en algún momento de este verano.

Otros consejos

RESPUESTA actualizada, 2017: Sí. Utilice ESLint. http://eslint.org


Además de JSLint (ya mencionado en Cierre compilador ) y > (anteriormente mencionado en de awhyte respuesta ) he también he recibido una gran cantidad de beneficios que se ejecute JSHint y PHP CodeSniffer . A partir de 2012, los cuatro herramientas son de código abierto y tienen una amplia y activa comunidad de desarrolladores detrás de ellos. 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. Viene con un gran conjunto de reglas por defecto - Crockford propia, actualizan constantemente como él sigue aprendiendo sobre JavaScript y sus trampas. JSLint es altamente obstinado y esto es generalmente visto como algo bueno Por lo tanto hay (intencionalmente) un cantidad limitada que puede hacer para configurar o desactivar reglas individuales. Sin embargo, esto puede hacer que sea difícil de aplicar a JSLint código heredado.

JSHint es muy similar a JSLint (de hecho comenzó la vida como JSLint tenedor) pero es más fácil / posible configurar o desactivar todos los cheques de JSLint a través de las opciones de línea de comandos oa través de un href="https://npmjs.org/package/jshint" rel="nofollow noreferrer"> archivo .jshintrc .

Me gusta especialmente que yo puedo decir JSHint que informe todos 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, generalmente rescatar relativamente pronto al intentar procesar archivos que contienen un gran número de errores.

El compilador de cierre es muy útil, ya que, si el código no compilar con cierre, se puede sentir muy seguro de dicho código de es profundamente manguera de alguna manera fundamental. compilación de cierre es posiblemente lo más parecido que hay en el mundo JS a un "intérprete" comprobación de sintaxis como php -l o ruby -c

le advierte de los posibles problemas como parámetros faltantes y no declarada o las variables redefinido. 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 CodeSniffer puede analizar JavaScript , así como PHP y CSS. naves CodeSniffer wITH varias normas de codificación diferentes, (decir phpcs -i para ver ellos), que incluyen muchos sniffs útiles para código JavaScript incluidos los controles contra estructuras de control en línea y superflua espacios en blanco .

Aquí está una lista de de JavaScript olfatea disponible en PHP CodeSniffer partir de la versión 1.3 0.6 y aquí es una que permite llevar a cabo todos a la vez. Uso de conjuntos de reglas personalizadas, es fácil elegir las reglas que desea aplicar. E incluso se puede escribir sus propios olfatea si quiere cumplir un "estilo de la casa" particular, que no es compatible fuera de la caja. Que yo sepa CodeSniffer es la única herramienta de los cuatro mencionados aquí que soporta la personalización y la creación de nuevas reglas de análisis estático. Una advertencia sin embargo:. CodeSniffer es también el más lento-funcionamiento de cualquiera de las herramientas mencionadas

compilador de "cierre" JS de Google produce avisos y errores configurables en tiempo de compilación. Definitivamente encuentra variables y métodos mal escritas, además de errores Arity. Si estás dispuesto a escribir jsdoc la manera de cierre, se puede hacer mucho con información de tipo, también.

La herramienta YUI "Compresor" puede producir advertencias también, pero no lo he probado todavía.

No he tenido mucha suerte con el IDE de Aptana, construido en Eclipse, pero otras personas como él. Ver desbordamiento de pila discusión de JS IDE.

El IDE IntelliJ, que no es libre última vez que revisé, tiene un excelente soporte maldito JS. Detectará y resaltar VARs y métodos a medida que escribe mal escritas, y mucho más. Tiene autocompletar, también.

En resumen, JSLint, JSHint, Platón, ESLint, Google Closure-Linter son las herramientas disponibles. Me enfrentaba a problemas de instalación mientras estaba probando Google Closure-Linter para Windows. Sin embargo, sí menciona en la página web que su soporte para Windows es experimental. He encontrado y probado otra herramienta que funciona bien. Aquí está el enlace para ello: http://esprima.org/

Además, este es el enlace de GitHub para la herramienta Esprima: https://github.com/ariya/esprima

Se puede ver algunas herramientas JavaScript análisis de código estático en este Wiki .

Una herramienta de la wiki, pero no se menciona en este puesto, es DeepScan . Su objetivo es encontrar los errores de ejecución y los problemas de calidad en lugar de convenciones de la borra de codificación. Cubre también mecanografiado, reaccionar y Vue.js.

Puede probarlo para su proyecto de GitHub.

Probé ESlint y lo encontré good..you también puede añadir reglas personalizadas there..Here es el repositorio GitHub: https://github.com/nzakas/eslint y aquí es la introducción a la misma: http://www.nczonline.net/blog/2013/07/16/introducing-eslint/

Más seguridad enfocado a la lista de propósito general se puede encontrar en el Wiki de Mozilla en Seguridad / B2G / JavaScript código de análisis

  

El objetivo de este documento es recoger el análisis de código JavaScript   herramientas adecuadas para la inclusión en los próximos proyectos de Mozilla o para   uso interno.

También hay al menos un producto comercial que hace el análisis de seguridad: eructar obtiene nuevas capacidades de análisis de JavaScript

  

La última versión de eructar incluye un nuevo motor para el análisis estático de código JavaScript. Esto permite a eructar escáner para informar de una gama de nuevas vulnerabilidades, incluyendo:

     
      
  • XSS basada en DOM
  •   
  • inyección de JavaScript
  •   
  • inyección SQL del lado del cliente
  •   
  • WebSocket secuestro
  •   
  • manipulación ruta del archivo local
  •   
  • redirección abierto, basado en DOM
  •   
  • manipulación de cookies
  •   
  • manipulación encabezado de solicitud Ajax
  •   
  • negación basada en DOM de servicio
  •   
  • manipulación mensaje Web
  •   
  • manipulación almacenamiento HTML5
  •   

En el ámbito comercial, Coverity Análisis Estático análisis de soportes de JavaScript a partir de la versión 7.7 (mediados de 2015).Respecto a tu pregunta acerca de los errores tipográficos, mi mascota proyecto que aparece en la última versión (8.0, a partir de 2016) encuentra los errores tipográficos en los nombres de los elementos de programa.

Como una clave de desarrollador en el proyecto, por favor, acepte mis enchufe descarado:Aunque aún no es tan maduro como el venerada C/C++ análisis, Coverity del análisis de JavaScript que comparte gran parte de el mismo motor, con el mismo enfoque en la búsqueda de alto valor defectos con una baja tasa de falsos positivos defecto de informes.Estamos aumentando nuestro enfoque en la búsqueda de defectos de seguridad en JavaScript (y otros idiomas), además de la búsqueda general de errores de programación.

Ahora, aquí están algunos de los errores tipográficos que se encuentra (exacto error tipográfico deja como ejercicio para el lector, para hacer hincapié en la facilidad con la que puede ser pasado por alto):

merge.js: (enlace estable) (última modificación)

commands-packages-query.js: (enlace estable) (última modificación)

series-pie-tests.js: (enlace estable) (última modificación)

outline_case.js: (enlace estable) (última modificación)

JSLint para este tipo de cosas ...

Flow hace análisis estático con y sin anotaciones.

Si necesita anotaciones, la sintaxis es compatible con mecanografiado .

Instalar el paquete rel="nofollow"> con:

npm install --global flow-bin

También hay algo de utillaje. Echar un vistazo a tragar-flowtype y quizás SublimeLinter-flujo nofollow

JSAnalyse acaba de ser publicado en CodePlex. Es una herramienta que analiza las dependencias entre los archivos javascript. Puede incluso definir las dependencias permitidas y JSAnalysis comprueba si se cumplen o no las reglas definidas. Eso permite hacer un seguimiento de las dependencias de JavaScript, incluso en grandes proyectos y tienen una arquitectura limpia.

JSAnalyse puede ser ejecutado como una herramienta de línea de comandos o configurar a través de la capa de Visual Studio Diagrama. También es fácil de integrar en la construcción. Con cerradas check-ins que pueda mantener las dependencias bajo control.

http://jsanalyse.codeplex.com/

Nuestra SD ECMAScript CloneDR es una herramienta para encontrar exactamente así como de miopía perder copias de código duplicado a través de grandes bases de código fuente de JavaScript.

Se utiliza la sintaxis del lenguaje para guiar la detección, por lo que encontrar clones a pesar de los cambios de formato, comentarios insertados / borrados, rebautizada como las variables e incluso algunos inserta / borrado declaraciones.

El sitio cuenta con una muestra de ejecución CloneDR en la biblioteca de cierre de Google.

La revelación completa, estoy detrás de esto: http://www.toptensoftware.com/minime lo que hace minimización, ofuscación y un conjunto razonable de cheques estilo pelusa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top