web-dev-qa-db-fra.com

Empêcher l'avertissement JSHint que «nomFonction est défini mais jamais utilisé»

Je viens de commencer à utiliser JSHint (via le package Sublime-Linter pour Sublime Text 2). Je voudrais supprimer ses avertissements concernant les fonctions qui sont utilisées avant qu'elles ne soient définies, car je ne vois aucun problème à utiliser des définitions de fonctions comme celle-ci. Par exemple, le code suivant génère des avertissements:

(function($){ 

    $(document).ready(function()
    {
      formValidationSetup();
      refreshErrorMessages();
    });

    function formValidationSetup()
    {

    }

    function refreshErrorMessages()
    {

    }

})(jQuery);

Les avertissements:

  1. formValidationSetup est défini mais jamais utilisé
  2. refreshErrorMessages est défini mais jamais utilisé

J'ai essayé de définir undef sur false dans les options JSHint, mais Je reçois toujours ces erreurs. Y a-t-il une autre option que je devrais définir? Former les documents JSLint pour undef :

true si les variables et les fonctions n'ont pas besoin d'être déclarées avant d'être utilisées. Ce n'est pas disponible en mode strict.

45
Undistraction

Pour éviter l'avertissement

défini mais jamais utilisé

dans jslint dans votre javascript ajoutez des commentaires comme:

 /*exported formValidationSetup, refreshErrorMessages */

Dans jshint et jslint, vous pouvez définir l'option inutilisée sur false:

 /*jshint unused:false*/

Voir Options

90
Roland Puntaier

J'ai eu ce problème avec should et expect dans les tests Chai. Je me suis retrouvé avec ce modèle:

'use strict';

var request = require('supertest');
var should = require('chai').should();  // jshint ignore:line
var expect = require('chai').expect;    // jshint ignore:line

process.env.NODE_ENV = 'test';
var appPromise = require('./index');

describe('GET /r_u_up', function() {

  it('respond with 204', function(done) {
    appPromise.then(function(app) {
      request(app)
      .get('/r_u_up')
      .expect(204, done);
    });
  });

});
9
Michael Cole

Vous pouvez simplement utiliser

"unused": false,

dans votre .jshintrc

4

Une meilleure façon de ne pas toucher le Gruntfile.js dans une configuration Yoeman typique est de modifier le .jshintrc fichier (un fichier caché dans le système Unix). Et mettez à jour le contenu comme suit:

{
  "curly": true,
  "eqeqeq": true,
  "immed": true,
  "latedef": true,
  "newcap": true,
  "noarg": true,
  "sub": true,
  "undef": true,
  "unused": false, // the change is here
  "boss": true,
  "eqnull": true,
  "node": true
}

met le "unused" à false.

3
xptest18

Fait intéressant, l'ajout de 'use strict'; à l'intérieur de l'IIFE supprime l'erreur. Je ne sais pas pourquoi.

2
Undistraction