Mise en place de MegaLinter ; web-lint pour la partie code quality sur la CI, Trivy pour la partie CVE
64 lines
2.1 KiB
JavaScript
64 lines
2.1 KiB
JavaScript
// @ts-check
|
|
const eslint = require("@eslint/js");
|
|
const { defineConfig } = require("eslint/config");
|
|
const tseslint = require("typescript-eslint");
|
|
const angular = require("angular-eslint");
|
|
// Règles qualité "à la Sonar" (bugs, code smells, complexité) portées dans
|
|
// ESLint — remplace l'analyse SonarQube côté TypeScript.
|
|
const sonarjs = require("eslint-plugin-sonarjs");
|
|
|
|
module.exports = defineConfig([
|
|
{
|
|
files: ["**/*.ts"],
|
|
extends: [
|
|
eslint.configs.recommended,
|
|
tseslint.configs.recommended,
|
|
tseslint.configs.stylistic,
|
|
angular.configs.tsRecommended,
|
|
sonarjs.configs.recommended,
|
|
],
|
|
processor: angular.processInlineTemplates,
|
|
rules: {
|
|
"@angular-eslint/directive-selector": [
|
|
"error",
|
|
{
|
|
type: "attribute",
|
|
prefix: "app",
|
|
style: "camelCase",
|
|
},
|
|
],
|
|
"@angular-eslint/component-selector": [
|
|
"error",
|
|
{
|
|
type: "element",
|
|
prefix: "app",
|
|
style: "kebab-case",
|
|
},
|
|
],
|
|
// Modernisation constructeur → inject() : 567 occurrences dans l'existant.
|
|
// Pas un bug — chantier one-shot à mener via la migration officielle
|
|
// `ng generate @angular/core:inject`, puis repasser la règle en "error".
|
|
"@angular-eslint/prefer-inject": "off",
|
|
// Math.random() est légitime ici : tables aléatoires / jets de dés = le
|
|
// domaine métier. Aucun usage cryptographique côté front.
|
|
"sonarjs/pseudo-random": "off",
|
|
},
|
|
},
|
|
{
|
|
files: ["**/*.html"],
|
|
extends: [
|
|
angular.configs.templateRecommended,
|
|
angular.configs.templateAccessibility,
|
|
],
|
|
rules: {
|
|
// Accessibilité : ~127 findings sur l'existant. En "warn" (visibles,
|
|
// non bloquants) le temps de résorber le backlog — repasser en "error"
|
|
// règle par règle au fil des corrections.
|
|
"@angular-eslint/template/label-has-associated-control": "warn",
|
|
"@angular-eslint/template/click-events-have-key-events": "warn",
|
|
"@angular-eslint/template/interactive-supports-focus": "warn",
|
|
"@angular-eslint/template/no-autofocus": "warn",
|
|
},
|
|
}
|
|
]);
|