javascript - jshintrc - JSLint: comentarios de control(selectivo ignorar)
jslint npm (9)
Aquí hay un ejemplo de código para complementar la excelente respuesta de Matthew Crumley:
(function ($) {
$.isValidEmail = function(email){
/*jslint maxlen: 1000*/
var EMAIL_REGEXP = /^((([a-z]|/d|[!#/$%&''/*/+/-//=/?/^_`{/|}~]|[/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])+(/.([a-z]|/d|[!#/$%&''/*/+/-//=/?/^_`{/|}~]|[/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])+)*)|((/x22)((((/x20|/x09)*(/x0d/x0a))?(/x20|/x09)+)?(([/x01-/x08/x0b/x0c/x0e-/x1f/x7f]|/x21|[/x23-/x5b]|[/x5d-/x7e]|[/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])|(//([/x01-/x09/x0b/x0c/x0d-/x7f]|[/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF]))))*(((/x20|/x09)*(/x0d/x0a))?(/x20|/x09)+)?(/x22)))@((([a-z]|/d|[/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])|(([a-z]|/d|[/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])([a-z]|/d|-|/.|_|~|[/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])*([a-z]|/d|[/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])))/.)+(([a-z]|[/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])|(([a-z]|[/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])([a-z]|/d|-|/.|_|~|[/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])*([a-z]|[/u00A0-/uD7FF/uF900-/uFDCF/uFDF0-/uFFEF])))$/i;
/*jslint maxlen: 200*/
return EMAIL_REGEXP.test(email);
};
}(jQuery));
¿Tiene JSLint algo como los comentarios de control de JavaScript Lint (por ejemplo, /*jsl:fallthru*/
) para hacer que ignore ciertos pasajes?
Esto parece funcionar para mí. (usando el jslint incrustado en zedapp - zedapp.org)
/*jslint ignore:start*/
require([],function(require, exports, module) {
/*jslint ignore:end*/
var api = {
life: {
universe: {
everything: function() {
this.everything = {answer : 42};
}
}
}
};
api.life.universe.everything.bind(api.life.universe)();
console.log(JSON.stringify(api));
/*jslint ignore:start*/
return api;
});
/*jslint ignore:end*/
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.5/require.js"></script>
Nada aquí ha respondido a esta pregunta hasta donde puedo decir. El siguiente código aún me da errores de validación y no puedo hacer que JSLint acepte que no tengo tiempo para corregir una expresión regular de trabajo en este momento dadas las PRIORIDADES ACTUALES.
El error que recibo se refiere a un ''{'' sin escaparse y puede hacer que mi nuevo equipo profesional rechace a JSLint como una herramienta viable. Parece que no hay manera de callarlo con respecto a nuestros esfuerzos para desarrollarnos más eficientemente, lo que parece problemático.
/*jslint browser: true, devel: true, todo: true, regexp: true */
/*global $ */
/*
Abstract:
+ This module constitutes a layer of abstraction surrounding our bootstrap dependencies.
+ This module also contains some utility functions (so find a better place for them already!).
Validation:
+ This module has been validated using JSLint (www.jslint.com).
*/
var shoelaceModule = (function () {
''use strict'';
return {
showModal: function ($target) {
$target.modal(''show'');
},
hideModal: function ($target) {
$target.modal(''hide'');
},
/*jsl:ignore */
/*ignore jslint start */
stringFormat: function (format) {
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(/{([^{}]*)}/g, function (match, number) {
return args[number] !== ''undefined'' ? args[number] : match;
});
},
/*ignore jslint end */
/*jsl:end */
init: function () {
return this;
}
};
}());
No lo parece. Algunos usuarios de Google encuentran varias publicaciones de otros y las respuestas de personas de JSLint en la línea de "Corrija su código en lugar de etiquetarlo como intencionalmente defectuoso". No parece del todo amigable. Por supuesto, quizás en este caso solo debas arreglar el código, pero te lo dejo para que contestes.
Poner
/*ignore jslint start*/
antes y
/*ignore jslint end*/
después de que el código sea ignorado. Ex:
function ignore(){
/*ignore jslint start*/
var x; var y;
/*ignore jslint end*/
}
O bien, exporte la configuración de JsLint, defina sus símbolos IgnoreErrorStart / IgnoreErrorEnd e importe.
EditarAlgunas personas pueden confundir esta respuesta con JSHint. En ese caso, usa estos:
/*jshint ignore:start*/
<!-- code in here -->
/*jshint ignore:end*/
Tomado de https://.com/a/26012357/313501
Ponga /*jsl:ignore*/
y /*jsl:end*/
alrededor del código.
Sí. De la documentación [tenga en cuenta que esto es de una versión anterior de los documentos, pero todavía se aplica]:
La implementación de JSLint acepta un objeto de opción que le permite determinar el subconjunto de JavaScript que es aceptable para usted. También es posible establecer esas opciones dentro de la fuente de un script.
Una especificación de opción puede verse así:
/*jslint nomen: true, debug: true,
evil: false, vars: true */
Una especificación de opción comienza con / * jslint. Note que no hay espacio antes de la j. La especificación contiene una secuencia de pares de valores de nombre, donde los nombres son opciones de JSLint y los valores son verdaderos o falsos. Una especificación de opción tiene prioridad sobre el objeto de opción.
La documentación no lo menciona específicamente, pero puede habilitar y deshabilitar diferentes comprobaciones en todo el código con múltiples comentarios jslint (gracias Dominic Mitchell).
Tú también puedes:
ignoreThis(); // jshint ignore:line
¿Hay una manera de suprimir la advertencia JSHint para una línea dada?
Voy a decir: No. JSLint no parece tener una manera simple de decir, ''ignorar este bloque de código'', para mi gran molestia. Desactivar las diferentes opciones individualmente y luego volver a activarlas como Matt parece sugerir que debería funcionar, pero no va a ser elegante como JSHint /* jshint ignore:start */
, /* jshint ignore:end */
.
La razón por la que estaba investigando esto es porque estoy usando Brackets , que vienen con JSLint como su indicador predeterminado. Tengo un código de terceros minificado que copié en mi .js, temporalmente, y mientras esté allí, JSLint se quejará. Lo que apesta es que a menudo quiero pegar un trozo minificado desde el principio, que es también cuando quiero que la lengüeta que mira mi código me ayude a descartar errores oscuros. Más tarde, simplemente minimizaré y conciliaré todo con Grunt, pero no poder deshabilitarlo en un bloque desde el principio es realmente molesto.