web-dev-qa-db-fra.com

JSLint: commentaires de contrôle (sélectif ignorer)

Est-ce que JSLint a quelque chose de similaire aux commentaires control de JavaScript Lint (par exemple /*jsl:fallthru*/) pour lui faire ignorer certains passages?

43
AnC

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-les.


Modifier
Certaines personnes peuvent confondre cette réponse avec JSHint. Dans ce cas, utilisez ceux-ci:

/*jshint ignore:start*/
  <!-- code in here -->
/*jshint ignore:end*/

Extrait de https://stackoverflow.com/a/26012357/313501

26
napoleonss

Oui. De la documentation [notez qu'il s'agit d'une ancienne version de la documentation, mais qu'elle s'applique toujours]:

L'implémentation de JSLint accepte un objet d'option qui vous permet de déterminer le sous-ensemble de JavaScript 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 d'espace avant le j. La spécification contient une séquence de paires nom-valeur, 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érentes vérifications dans le code avec plusieurs commentaires jslint (merci à Dominic Mitchell).

Il y a un liste complète des options dans la documentation }.

19
Matthew Crumley

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));
5
Andrew De Andrade

Rien ici n'a répondu à cette question pour autant que je puisse le dire. Le code suivant me donne toujours des erreurs de validation et je ne peux pas amener JSLint à accepter le fait que je n’ai pas le temps de corriger une expression régulière fonctionnelle en ce moment, à cause de ACTUAL PRIORITIES.

L'erreur que je reçois concerne un '{' non échappé et peut amener ma nouvelle équipe professionnelle à rejeter JSLint comme un outil réalisable. Il semble qu’il n’y ait aucun moyen de la bloquer en ce qui concerne nos efforts pour nous 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;
        }
    };
}());
4
Mike Manard

Cela ne semble pas être le cas. Certains googlants trouvent plusieurs posts d’autres, ainsi que des réponses de personnes de JSLint dans le sens de "Corrigez votre code au lieu de le marquer intentionnellement comme défectueux" Ne semble pas tout à fait amical. Bien sûr, dans ce cas, vous devriez peut-être simplement corriger le code, mais je vous laisse le soin de répondre.

3
ironfroggy

Je vais dire, non. JSLint ne semble pas avoir un moyen simple de dire: "ignorez ce bloc de code", ce qui me dérange beaucoup. Désactiver individuellement les différentes options, puis les réactiver, comme Matt semble le suggérer, devrait fonctionner, mais il ne sera pas aussi élégant que le /* jshint ignore:start */, /* jshint ignore:end */ de JSHint. 

La raison pour laquelle je cherchais cela est parce que j'utilise Brackets , qui vient avec JSLint comme linterligne par défaut. J'ai copié temporairement un code tiers précis que j'ai copié dans mon fichier .js, et tant qu'il est dedans, JSLint va se plaindre. Ce qui pue, c’est que j’ai souvent envie de coller un morceau minifié très tôt, c’est aussi lorsque je veux que le linter regarde le code mon pour m'aider à éliminer les erreurs obscures. Plus tard, je vais tout minimiser et tout concaténer avec Grunt, mais ne pas pouvoir le désactiver rapidement pour un bloc est vraiment ennuyant.

0
Brian Chandler

Cela semble fonctionner pour moi. (en utilisant le jslint intégré à 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>

0
cestmoi