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:
- formValidationSetup est défini mais jamais utilisé
- 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.
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
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);
});
});
});
Vous pouvez simplement utiliser
"unused": false,
dans votre .jshintrc
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
.
Fait intéressant, l'ajout de 'use strict';
à l'intérieur de l'IIFE supprime l'erreur. Je ne sais pas pourquoi.