2011-09-27 9 views
31

He ejecutado JSLint por primera vez en un archivo bastante extenso, y tengo muchos errores como expected exactly 1 space between "function" and "(" o unexpected ' '. No me di cuenta de que esto era importante en absoluto en cualquier lugar en el que aprendí sobre JavaScript, y ahora arreglar cada una de estas cosas bastante simples a mano parece frustrante. Algunos puedo averiguarlo con un simple descubrimiento y lo reemplazo, pero me pregunto si hay alguna herramienta en línea que automáticamente haga estos cambios, ya que parecen ser bastante sencillos.¿Alguna herramienta para corregir automáticamente problemas simples de JSLint?

(tengo /*jslint white: false */ en mi archivo, que se desarrollan en Netbeans y auto-formato (excepto entonces tengo que corregir colgando encadenamientos jQuery, ya que no lo hace la derecha), y mi código todavía termina con un número enorme de las cosas que se queja de JSLint la medida de lo inesperado número de espacios.)

+0

Por qué no haga clic en el botón de "tolerar espacios en blanco sucio" casilla de verificación en la página JSLint? – selbie

+0

en realidad trató de eso y que no parecen tener un efecto – Damon

+1

De los [Instrucciones JSLint] (http://www.jslint.com/lint.html) para 'white' a partir del 2012-02-20 CET: "'verdadero' si las reglas estrictas de espacio en blanco deben ser ignoradas". Así que cambie 'white: false' a' white: true' si quiere obtener menos quejas de JSLint. – feklee

Respuesta

0

Damon, Prettier es probable que haga todo lo que desee wrt indolora el formato de código JavaScript. Convertirá tu código en AST y luego lo imprimirá en tu archivo para que se auto-formatee sobre la marcha. Incluso puede agregarlo como un enlace precommitido o ejecutarlo en una carpeta llena de archivos (¡bastante rápido también!) Para que toda su base de código sea inmediatamente bonita.

Here is a video from ReactConf that explains it pretty well

5

http://jsbeautifier.org/ debería solucionar todos sus problemas

+4

wow .. embellecedor brutaliza mi código: http://i.imgur.com/9H5Vb.jpg – Damon

+0

sí hombre. así es como funciona. al igual que jslint/csslint dañará tus sentimientos. No lo tomes como algo personal, los navegadores seguro que no. – albert

+0

supongo que mi idea de 'belleza' es un poco diferente? jaja .. Estoy confundido de por qué lo haría de esa manera. – Damon

4

jsfmt formatos javascript y AST permite la búsqueda y volver a escribir. Análoga a gofmt.

En algunos ide's como netbeans, puede formatear automáticamente el código con alt+shift+f.

También hay en línea. http://jsbeautifier.org/

2

Hay muchas herramientas para hacer cosas como esta. Yo uso JS Beautifier cual al menos corregir los errores de sangría y también los espacios-around-funciones-parte (he probado, yay!)

17

mientras comprueba cosas diferentes que JSLint, el modo de la Google closure linterfixjsstyle puede Haz lo que quieras.

Se corrige automáticamente el código para (más de cerca) encajar con el Google Javascript style guide que bien vale la pena leer.

Como han señalado otros, el Javascript beautifier es el camino a seguir para los problemas de espaciado.

+0

Miré esa página y no estaba seguro de cómo instalarla/ejecutarla; parece necesitar algún tipo de entorno PERL? – Damon

+0

Necesitarás Python: la instalación para Mac funcionó para mí al ejecutar la línea que sugieren. ¿Qué sistema operativo tienes? –

+1

Lamentablemente, parece que el filtro de cierre no cambia 'function() {}' -> 'function() {}'. Podría usar expresiones regulares para limpiarlas, avíseme si desea ayuda. Sin embargo, estoy muy sorprendido de que el embellecedor no funcionó para usted, intente ejecutar un subconjunto de su código a través de él para descubrir qué parte lo vuelve loco (no debería ser así). –

2

Si usa/tiene Visual Studio, también formatea JavaScript. Es posible que deba configurar las opciones de formato de los valores predeterminados.

2

Simplemente use IDE, que admite el formato de código personalizado. Como NetBeans, WebStorm o Visual Studio.

11

Hay un módulo npm llamado fixmyjs.

En "modo de legado" con JSHint:

var jshint = require('jshint').JSHINT 
    var fixmyjs = require('fixmyjs') 
    jshint(stringOfCode, objectOfOptions) 
    var stringFixedCode = fixmyjs(jshint.data(), stringOfCode, objectOfOptions).run() 

funciona muy bien!

También hay un Sublime Text 2/3 Package.

+0

Gracias por esto, esta es una gran – lfender6445

+0

Uf, esto es casi grande - por desgracia --legacy modo ya no funciona y las tiras formateador por defecto todas las líneas vacías: Hola https://github.com/jshint/fixmyjs/issues/88 –

+0

, autor aquí, el modo Legacy todavía funciona, todas las pruebas están pasando. ¿Tiene un caso de prueba fallido? – goatslacker

Cuestiones relacionadas