Ceci est une ancienne révision du document !
Jshint
Config récupérée ici plus quelques ajouts personnels.
// 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": false,
// 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
}
