Ceci est une ancienne révision du document !


Jshint

Config récupérée 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
}