This commit is contained in:
gcch 2025-10-01 14:37:12 +02:00
commit 268cf80769
14 changed files with 126 additions and 48 deletions

View file

@ -13,12 +13,6 @@ export const règlesJavaScript: Readonly<Linter.Config> = {
* @link [ESLint](https://eslint.org/docs/latest/rules/array-callback-return)
*/
"array-callback-return": ["error", { allowVoid: true, checkForEach: true }],
/**
* Interdit la définition de fonctions avec plus de 3 paramètres.
*
* @link [ESLint](https://eslint.org/docs/latest/rules/max-params#max)
*/
"max-params": ["error", { max: 3 }],
/** Surchargé par une meilleur version présente dans le plugin _Unicorn_. */
"no-nested-ternary": "off",
/**
@ -42,11 +36,13 @@ export const règlesJavaScript: Readonly<Linter.Config> = {
*/
"no-unreachable-loop": "error",
/**
* Interdit l'usage de variables non définies.
* Interdit l'utilisation d'une variable avant sa définition.
*
* La règle est désactivée ici pour que l'ordre de déclaration au sein d'un module n'ait pas d'importance.
*
* @link [ESLint](https://eslint.org/docs/latest/rules/no-use-before-define)
*/
"no-use-before-define": "error",
"no-use-before-define": "off",
/**
* Interdit l'assignation de variables non utilisées. Par la nature de l'analyse statique de code, certains cas
* peuvent ne pas être détectées.

View file

@ -13,27 +13,13 @@ export const règlesProgrammationFonctionnelle: Readonly<Linter.Config> = {
...functional.configs.stylistic.rules,
// Choix stylistique.
"@typescript-eslint/array-type": ["error", { default: "generic", readonly: "generic" }],
// L'imposition d'une immutabilité plus importante est extrêmement contraignante.
"functional/prefer-immutable-types": ["error", { enforcement: "ReadonlyShallow" }],
// L'imposition d'une immutabilité plus importante est extrêmement contraignante et réduit la lisibilité du code.
"functional/prefer-immutable-types": "off",
// Le style tacite complique la lecture du code.
"functional/prefer-tacit": "off",
// Choix stylistique.
"functional/readonly-type": ["error", "generic"],
// L'imposition d'une immutabilité plus importante est extrêmement contraignante.
"functional/type-declaration-immutability": [
"error",
{
ignoreInterfaces: false,
rules: [
{
comparator: "AtLeast",
fixer: false,
identifiers: "^(?!I?Mutable).+",
immutability: "ReadonlyShallow",
suggestions: false,
},
],
},
],
// L'imposition d'une immutabilité plus importante est extrêmement contraignante et réduit la lisibilité du code.
"functional/type-declaration-immutability": "off",
},
};

11
règles/sonarjs.ts Normal file
View file

@ -0,0 +1,11 @@
import type { Linter } from "eslint";
import sonarJs from "eslint-plugin-sonarjs";
export const règlesSonarJs: Readonly<Linter.Config> = {
name: "SonarJS",
plugins: sonarJs.configs.recommended.plugins ?? {},
rules: {
...sonarJs.configs.recommended.rules,
},
};

View file

@ -3,6 +3,7 @@ import type { Linter } from "eslint";
import perfectionist from "eslint-plugin-perfectionist";
export const règlesTri: Readonly<Linter.Config> = {
name: "Tri",
plugins: perfectionist.configs["recommended-natural"].plugins ?? {},
rules: perfectionist.configs["recommended-natural"].rules ?? {},
};

View file

@ -29,5 +29,50 @@ export const règlesTypeScript: Readonly<Linter.Config> = {
...desactivationsJavaScript.rules,
...strictTypeChecked.rules,
...stylisticTypeChecked.rules,
/**
* Impose un usage consistant entre interfaces et types. Ici préfère les déclarations de types.
*
* @link [typescript-eslint](https://typescript-eslint.io/rules/consistent-type-definitions)
*/
"@typescript-eslint/consistent-type-definitions": ["error", "type"],
/**
* Interdit la définition de fonctions avec plus de 3 paramètres.
*
* @link [typescript-eslint](https://eslint.org/docs/latest/rules/max-params)
*/
"@typescript-eslint/max-params": ["error", { max: 3 }],
/**
* Impose une syntaxe particulière pour les signatures de méthodes au sein d'interfaces et types. Ici utilise la
* syntaxe « propriété ».
*
* ```typescript
* interface Exemple {
* func: (arg: string) => number;
* }
* ```
*
* @link [typescript-eslint](https://typescript-eslint.io/rules/method-signature-style/)
*/
"@typescript-eslint/method-signature-style": ["off", "property"],
/**
* Interdit l'usage de nombres magiques. Cette règle étend
* [no-magic-numbers](https://eslint.org/docs/latest/rules/no-magic-numbers) de la configuration de base _ESLint_.
*
* @link [typescript-eslint](https://eslint.org/docs/latest/rules/no-magic-numbers)
*/
"@typescript-eslint/no-magic-numbers": "off",
/**
* Autorise ici la comparaison avec des littéraux booléens. La désactivation de cette règle permet des comparaisons
* plus claires qu'avec l'opérateur de négation `!`.
*
* @link [typescript-eslint](https://typescript-eslint.io/rules/no-unnecessary-boolean-literal-compare)
*/
"@typescript-eslint/no-unnecessary-boolean-literal-compare": "off",
/**
* Interdit l'usage de paramètres de types non utilisés plusieurs fois. Désactivé ici à cause de faux positifs.
*
* @link [typescript-eslint](https://typescript-eslint.io/rules/no-unnecessary-type-parameters)
*/
"@typescript-eslint/no-unnecessary-type-parameters": "off",
},
};

View file

@ -32,12 +32,24 @@ export const règlesUnicorn: Readonly<Linter.Config> = {
* @link [GitHub](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/explicit-length-check.md)
*/
"unicorn/explicit-length-check": ["error", { "non-zero": "not-equal" }],
/**
* Interdit l'usage de conditions négatives pour la clarté du code.
*
* @link [GitHub](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negated-condition.md)
*/
"unicorn/no-negated-condition": "error",
/**
* Interdit l'usage d'opérateurs ternaires imbriqués. Cette règle remplace celle présente par défaut dans _ESLint_
* avec le même nom.
*
* @link [GitHub](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-nested-ternary.md)
*/
"unicorn/no-nested-ternary": ["error"],
"unicorn/no-nested-ternary": "error",
/**
* Interdit l'usage de `null`.
*
* @link [GitHub](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-null.md)
*/
"unicorn/no-null": "error",
},
};