JSLint: commentaires de contrôle (sélectifs ignorer)
9 réponses
Mettre
/*ignore jslint start*/
avant et
/*ignore jslint end*/
après le code à ignorer. Ex:
function ignore(){
/*ignore jslint start*/
var x; var y;
/*ignore jslint end*/
}
ou exportez les paramètres JsLint, définissez vos symboles IgnoreErrorStart/ IgnoreErrorEnd et importez.
modifier
Certains pourraient confondre cette réponse avec JSHint. Dans ce cas, l'utilisation de ces:
/*jshint ignore:start*/
<!-- code in here -->
/*jshint ignore:end*/
Oui. De la documentation [notez qu'il s'agit d'une ancienne version du docs, mais elle s'applique toujours]:
la mise en œuvre de JSLint accepte un objet option qui vous permet de déterminer le sous-ensemble de JavaScript qui est acceptable pour vous. Il est également possible de définir ces options dans la source d'un script.
une spécification d'option peut ressembler à ceci:
/*jslint nomen: true, debug: true,
evil: false, vars: true */
une spécification d'option commence par /*jslint. Notez qu'il n'y a pas de place avant le J. La spécification contient une séquence de paires de valeurs de noms, où les noms sont des options JSLint, et les valeurs sont true ou false. Une spécification d'option a priorité sur l'objet d'option.
la documentation ne le mentionne pas spécifiquement, mais vous pouvez activer et désactiver différents contrôles tout au long du code avec plusieurs jslint commentaires (Merci Dominic Mitchell).
il y a une liste complète des options dans la documentation .
voici un exemple de code pour compléter L'excellente réponse 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));
rien ici n'a répondu à cette question pour autant que je puisse dire. Le code suivant me donne toujours des erreurs de validation et je ne peux pas faire accepter à JSLint que je n'ai pas le temps de corriger une expression régulière qui fonctionne maintenant étant donné les priorités réelles.
l'erreur que je reçois concerne un '{' non enregistré et peut entraîner mon nouveau, équipe professionnelle rejetant JSLint comme un outil faisable. Il semble y avoir aucun moyen de l'enfermer au sujet de nos efforts pour développer plus efficacement, ce qui semble problématique.
/*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;
}
};
}());
il ne semble pas. Certains Googling trouve plusieurs messages par d'autres, et les réponses des gens de JSLint le long des lignes de "corriger votre code au lieu de l'étiqueter intentionnellement défectueux."Ne semble pas tout à fait amical. Bien sûr, peut-être que dans ce cas, vous devriez juste corriger le code, mais je vous laisse le soin de répondre.
vous pouvez aussi:
ignoreThis(); // jshint ignore:line
Existe-t-il un moyen de supprimer l'avertissement JSHint pour une ligne donnée?
je vais dire, non. JSLint ne semble pas avoir une façon simple de dire, "ignorez ce bloc de code", beaucoup à mon ennui. Désactiver les différentes options individuellement et ensuite les remettre en marche comme Matt semble suggérer devrait fonctionner, mais ce ne sera pas élégant comme /* jshint ignore:start */
, /* jshint ignore:end */
de JSHint .
la raison pour laquelle j'ai cherché dans ce est parce que j'utilise parenthèses , qui vient avec JSLint comme il est par défaut linters. J'ai un code minifié que j'ai copié dans le mien .js, temporairement, et tant qu'il y JSLint va se plaindre. Ce qui pue, c'est que je veux souvent coller un morceau miniaturisé au début, ce qui est aussi quand je veux que le linter regarde mon code pour m'aider à écarter les erreurs obscures. Plus tard, je vais juste minify et concat tout avec Grunt, mais ne pas être en mesure de le désactiver pour un bloc tôt est vraiment, vraiment, ennuyeux.
Cela semble fonctionner pour moi. (en utilisant le jslint intégré dans 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>