====== Jshint ====== Config récupérée [[https://gist.github.com/tdd/a4034b14533e8b3792bc|ici]] plus quelques ajouts personnels. A mettre dans le fichier //~/.jshintrc//. // Configuration globale au projet de JSHint // ========================================= // // (Y compris celui intégré à votre EDI/éditeur, normalement) // // [Liste complète des options possibles](http://www.jshint.com/docs/options/) { // Options de restriction // ---------------------- // Exige les accolades pour toute instruction de contrôle (`if`, etc.) // même si on n'utilise qu'une instruction dedans pour le moment. "curly": true, // Exige des (in)égalités strictes : `===` et `!==` "eqeqeq": true, // Exige le filtrage des `for…in` par un test `.hasOwnProperty` "forin": true, // Exige l'enrobage des IIFEs par des parenthèses "immed": true, // Interdit plus de 3 niveaux d'imbrication de blocs "maxdepth": 3, // Interdit plus de 3 paramètres déclarés pour une fonction "maxparams": 3, // Exige que les fonctions appelées avec `new` démarrent par une majuscule // (ce qui est traditionnellement le cas pour un constructeur). "newcap": true, // Interdit les hacks basés sur `arguments.caller` et `arguments.calleee` // (qui sont de toutes façons illégaux en ES5 Strict). "noarg": true, // Interdit le whitespace en fin de ligne (votre éditeur devrait le nettoyer tout // seul de toutes façons, comme avec l'option `trim_trailing_white_space_on_save` // de Sublime Text par exemple). "trailing": true, // Interdit l'emploi de variables non explicitement déclarées (ou fournies // via la directive de commentaire `global`). Permet de détecter rapidement // des fautes de frappe dans les identifiants, par exemple, ainsi que des // fuites globales par inadvertance. "undef": true, // Avertit de variables ou paramètres non utilisés. Très pratique pour nettoyer // du code mais aussi pour certains cas de fautes de frappe. "unused": true, // Options de relâchement // ---------------------- // Ces options assouplissent les restrictions mises en place par JSHint, // qu'elles soient là par défaut ou explicitement au travers d'options. // Autorise la présence d'expressions `debugger` dans le code. "debug": true, // Autorise les (in)égalités laxistes (`==`et `!=`) si l'opérande est `null`, // afin de gérer d'un coup `null` et `undefined`, ce qui est un cas fréquent. "eqnull": true, // Autorise les syntaxes ES6 (`let`, `const`, `yield`, `function*`, `module`…) "esnext": true, // Autorise les fonctions dans les boucles ; une [IIFE](http://en.wikipedia.org/wiki/Immediately-invoked_function_expression) // dans une boucle est une solution classique aux // [soucis de closure asynchrone](http://www.jshint.com/docs/options/#loopfunc). "loopfunc": true, // Options d’environnement // ----------------------- // Indique un contexte potentiel navigateur, donc une tonne de globaux… "browser": true, // Autorise `console`, `alert`, etc. "devel": true, // Indique un contexte potentiel Node, donc ses objets globaux (`process`, // `Buffer`, `global`…) mais aussi le droit à des `'use strict'` globaux aux fichiers // (puisque ce sont forcément des modules). "node": true, // Desactive les alertes pour les variables globales défini // ex. : "predef": ["define", "UWA"], // Optimisation du code "maxcomplexity": 5, "maxstatements": 15 }