javascript - sintaxis - ¿Está JSLint disponible para uso sin conexión?
sintaxis js online (17)
Cory Bennet tiene un buen post en la línea de comandos JSLint . Gran parte de tu configuración hará que SpiderMonkey funcione. No está tan mal si estás ejecutando Linux; un poquito más difícil si estás usando Windows y Cygwin . Y aquí hay más discusión y comparación con los tiempos de ejecución de Rhino .
ACTUALIZACIÓN: 2013.11 - si está usando node.js en la línea de comandos (¿y por qué no lo haría?), Puede ejecutar tanto jslint como el nuevo eslint . [NB: He contribuido con informes de errores y código de prueba para eshint.] Ambos son mucho más fáciles de configurar que lo que tengo arriba ...
Me gustaría usar JSLint , pero desconfío de las herramientas que tienen acceso a mi código fuente sin filtrar. ¿Hay una versión sin conexión o hay otra herramienta similar que hace "comprobación de errores de lint
" para JavaScript sin conexión?
Edición: ¿ Una con una GUI y que te muestra una lista de errores de estilo, en lugar de una interfaz de línea de comandos?
Dado que JSLint está escrito en JavaScript, puede ejecutarlo sin conexión copiando el HTML y los archivos de JavaScript referenciados localmente. La función "Guardar como ..." de la página web de IE7, "completa" hace esto muy bien.
En lugar de descargar con un navegador, también puede descargar directamente las fuentes. Esto tiene la ventaja de que puede actualizarlos con el sistema de versiones y leer el código fuente comentado.
git clone https://github.com/douglascrockford/JSLint.git
Esto le proporciona archivos de origen HTML y JS, pero no puede usarlos tal como son. Siga el proceso de construcción en README
. En pocas palabras, debe git clone
otros dos proyectos JS de Douglas Crockford, luego concatenar (y minimizar) algunos archivos JS de los tres repositorios de git en web_jslint.js
.
Lo hice así, con el compresor YUI:
cat ../ADsafe/adsafe.js ../JSON-js/json2.js intercept.js jslint.js > /tmp/web_jslint.uncomp.js
java -jar ../../yuicompressor-2.4.7.jar /tmp/web_jslint.uncomp.js > web_jslint.js
Luego abre jslint.html
con tu navegador.
Es bastante fácil recrear lo que Crockford tiene en JSLint.com. La versión en línea de JSLint.com de .js es un conglomerado minificado de algunos archivos que incluye algunos gastos generales que no entiendo muy bien, como ADSAFE
cosas de ADSAFE
. Vamos a reducirlo a una envoltura de caso más simple en su lugar.
Construyendo su propio contenedor HTML para JSLint:
Aquí está el código de una página web que buscará jslint.js ( la última versión de JSLint actualmente se puede encontrar en github aquí como texto sin procesar ) en el mismo directorio y se desencadena de forma similar a como lo hace JSLint.com ahora.
<html>
<head>
<script src="jslint.js"></script>
<script>
function jslintalizeMe()
{
var i, divOut, errs, errsMsg = "";
divOut = document.getElementById("errors");
divOut.innerHTML = "";
if (!JSLINT(document.forms[0].elements[0].value))
{
errs = JSLINT.errors;
for (i=0; i < errs.length; i++)
{
err = errs[i];
if (null !== err)
{
if (undefined !== err.id)
{
errsMsg += "Error: "
+ err.code
+ " -- line "
+ err.line
+ " char "
+ err.character + "<br />"
+ " "
+ err.evidence + "<br />"
+ " " +
err.reason + "<br /><br />/n";
}
else
{
errsMsg += err.reason;
}
}
}
divOut.innerHTML = errsMsg;
}
}
</script>
</head>
<body>
<form>
<textarea rows="24" cols="80"
placeholder="// Paste quality code here"></textarea>
<br />
<button onclick="jslintalizeMe();return false;">JSLint</button>
</form>
<div id="errors"></div>
</body>
</html>
^ De un viejo blog mío .
Depende del lector proverbial hacer que la GUI sea más pegajosa, pero este informe y el sitio JSLint ahora lo hacen.
Hay otro JS Linter, llamado JavaScript Lint , que tiene versiones de línea de comandos en línea y descargables. Uso la versión descargable todo el tiempo. He estado pensando en integrarlo en SVN como parte de un gancho. Me gusta más que JSLint porque tiene más opciones y parece detectar más cosas. Puede configurarse para tratar ciertos identificadores como predefinidos, para juegos de herramientas y similares, lo que le permite verificar el uso de variables no definidas, lo que estoy bastante seguro de que JSLint no puede hacer.
Hay un gran widget de Yahoo:
http://ajaxian.com/archives/jslint-multi
Es de código abierto, si eres paranoico puedes auditar el código.
texto alternativo http://jslint-multi-widget.googlecode.com/files/jslint_multi_v1_scrshot.png
JSLint se puede ejecutar sin conexión con WSH o Rhino:
http://www.jslint.com/lint.html#try
Edit : En los dos años desde que se hizo esta pregunta, JSLint ha eliminado el soporte para Rhino y WSH. Aliento a cualquier persona interesada en alinear su código para que también revise JSHint . Es una bifurcación de JSLint que pretende ser más flexible que el original, pero también es compatible con Node, Rhino y WSH (además de los navegadores, por supuesto).
Pruebe el cierre de Google Linter . Tiene más características que JSLint, también.
Sí:
- En Windows, use jslint.js + WSH .
- En los sistemas que pueden ejecutar Rhino, use jslint.js + Rhino .
Básicamente, solo necesita un compilador JavaScript incrustado para ejecutar jslint.js
.
Si está en un entorno Java, puede encontrar mi herramienta jslint4java útil. Viene en una variante de línea de comando, y también puede integrarse en un script ant. No hay GUI, porque apesto mal a esos. :-)
Si está utilizando TextMate, el paquete JSLintMate tiene una interfaz simple, admite tanto JSLint como JSHint , y le permite configurar opciones personalizadas de varias maneras (por ejemplo, un archivo de configuración por proyecto, opciones globales en todos los proyectos).
Si le gusta la JSLint , puede hacer File
> Save Page As...
y Save as type:
Web Page, complete
(en Firefox, hacerlo en Internet Explorer puede ser ligeramente diferente) a una carpeta local.
jslint.htm
el nombre a jslint.htm
para obtenerlo en 8.3 sin espacios.
Parece funcionar cuando se guarda localmente.
Tres cosas:
- Esto puede violar su licencia, aunque dejo intacto el derecho de autor y no modifico ninguno de sus códigos, y técnicamente mi navegador web ya creó una copia de su sitio en mi disco duro local, así que no estoy seguro de si estoy en infracción o no y no soy abogado, así que seguiré haciendo esto hasta que reciba una carta en la que se me indique que deje de hacerlo.
- Es posible que la página aún pueda enviar su código a Internet, aunque la posibilidad de que sea posible es muy remota. Dicho esto, las versiones WSH o Rhino probablemente podrían enviar el código que envíes a Internet más fácilmente que una versión en una página web guardada localmente (si eres paranoico).
- Te atrasarás en cualquier corrección de errores o actualizaciones que Douglas haga. Pero lo mismo se aplica a las versiones WSH o Rhino si no las actualiza regularmente.
Si utiliza TextMate, he creado un paquete que ejecuta JSLint y muestra el resultado en una ventana gráfica. Es todo autónomo; nada más necesita ser instalado para usarlo:
Si ya usa gemas ruby, entonces puede instalar jslint gem en un comando: http://rubygems.org/gems/jslint
Tengo JSLint con el código de validación de Node.js en mis scripts de implementación para garantizar que no empuje accidentalmente el código que podría romper mi sitio. Puede ahorrar mucho tiempo en el manejo de problemas de soporte al cliente más adelante.
Tengo una herramienta para ejecutar JSLint desde la línea de comandos con SpiderMonkey shell o Rhino . También incluye un complemento para Vim que te permite presionar un botón para resaltar automáticamente cualquier línea problemática mientras editas un archivo:
YSlow para Firebug tiene esta característica incorporada