Couverture des frameworks

Ce qu’Agnes comprend, et ce qu’il ne comprend pas encore

Agnes analyse le code source de votre dépôt sans l’exécuter : ce qu’il peut vérifier dépend donc des fichiers et des conventions de votre framework. Cette page montre où la couverture est complète, où elle est partielle et ce qui manque encore.

Couverture par framework

Les vérifications des dépendances fonctionnent pour tous les frameworks, car elles lisent votre lockfile. Les autres vérifications dépendent des fichiers et des conventions du framework.

Les vérifications qu’Agnes exécute pour chaque framework
FrameworkDépendances et sécuritéAvis, licences, secretsQualité du codeLint, duplication, complexitéTemplates et stylesBalisage et CSSCode mortFichiers et exports inutilisésAccessibilitéActivable par projet
HTML, CSS and JavaScript Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge
React (Vite, Create React App) Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge
Next.js Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge
TanStack Start Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge
React Router and Remix Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge
Solid, Qwik and Preact Pris en charge En partie Pris en charge En partie En partie
Vue Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge
Nuxt Pris en charge Pris en charge Pris en charge En partie Pris en charge
Svelte Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge
SvelteKit Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge
Astro Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge
Angular Pris en charge Pris en charge Pris en charge Pris en charge Pris en charge

Pris en charge signifie que la vérification s’exécute et connaît les conventions du framework. En partie signifie qu’elle s’exécute avec les limites décrites plus bas. Pas encore signifie que la vérification est ignorée pour ce framework.

Bon à savoir

Les frameworks qui ont une limite, ou une convention qui mérite une explication.

  • TanStack Start

    Les routes et l’arbre de routes généré comptent comme points d’entrée, donc les fichiers de routes ne sont jamais signalés comme inutilisés. Les paquets propres au framework ne sont pas vérifiés pour savoir s’ils sont inutilisés.

  • React Router and Remix

    Les routes du dossier app et les fichiers cités dans routes.ts comptent comme points d’entrée. routes.ts est lu comme du texte, jamais exécuté : pour les routes construites par du code, comme des boucles ou des fonctions utilitaires, les fichiers peuvent donc être signalés comme inutilisés.

  • Solid, Qwik and Preact

    Analysé comme du TypeScript et du JSX classiques. Nous n’avons pas testé ces frameworks en particulier : les règles propres à React peuvent donc signaler des choses qui sont correctes ici, et les résultats sur le code mort dépendent d’un index.html ou d’un point d’entrée dans package.json.

  • Vue

    En plus des vérifications du code et des templates, Agnes signale les props qu’un composant modifie, les refs utilisées sans .value et v-html (un constat de sécurité à examiner). Les blocs style sont lintés quel que soit leur lang. Les avertissements de dépréciation de Vue 2 sont écartés.

  • Nuxt

    Les pages, layouts, middlewares, plugins et le code serveur comptent comme points d’entrée. C’est aussi le cas des dossiers components, composables, utils et stores, car Nuxt les importe automatiquement : le code inutilisé dans ces dossiers n’est donc pas signalé.

  • Svelte

    Les avertissements du compilateur Svelte sur la réactivité et les styles inutilisés sont signalés, ainsi que des règles d’eslint-plugin-svelte comme les clés each manquantes et {@html} (un constat de sécurité à examiner). La règle qui signale chaque lien interne n’utilisant pas resolve() est écartée, car trop bruyante.

  • Astro

    Les pages sont des points d’entrée, et les scripts, templates et styles des composants sont vérifiés. Les vérifications d’accessibilité pour Astro couvrent les templates.

  • Angular

    Le TypeScript, les templates et les templates inline sont vérifiés avec les règles de lint recommandées d’Angular, et les feuilles de style des composants sont lintées comme les autres (::ng-deep, :host et :host-context sont compris). Les styles inline écrits dans le décorateur du composant ne sont pas lintés. Les templates sont trouvés via le templateUrl de chaque composant, les noms de fichiers n’ont donc pas d’importance.

Limites connues

Elles ne sont pas liées à un framework en particulier. Nous les listons pour que vous sachiez ce qu’un bon score vous dit, et ce qu’il ne vous dit pas.

  • Stylus

    Les fichiers Stylus ne sont pas analysés. Le seul parseur disponible pour Stylus n’est plus maintenu et lit mal la syntaxe Stylus courante. SCSS, Sass et Less sont lintés, avec les règles CSS et SCSS standard.

  • Score de maintenabilité des scripts de composants

    La complexité cognitive est mesurée dans les scripts des fichiers .vue, .svelte et .astro, mais le score de maintenabilité par fichier ne lit que les fichiers JavaScript et TypeScript.

  • Un lockfile est nécessaire

    Les vérifications des dépendances, des avis et des licences lisent package-lock.json, yarn.lock, pnpm-lock.yaml ou bun.lock, et la vérification des avis lit aussi composer.lock. Sans lockfile, cette partie du score est écartée.

  • npm, plus les avis Composer

    Les paquets Composer sont vérifiés pour les avis connus, mais pas pour leur obsolescence ni pour leurs licences. Les dépendances d’autres écosystèmes, ou de Deno, ne sont pas vérifiées.

  • Votre propre configuration de lint n’est pas lue

    Agnes exécute ses outils avec ses propres règles dans un bac à sable et n’exécute jamais vos fichiers de configuration : les règles ESLint, Biome ou Stylelint propres à votre projet ne changent donc pas le rapport.

  • Des dépôts surtout frontend

    Au moins 60 % des lignes de code source doivent être du code frontend. Un monorepo avec beaucoup de code backend peut passer sous ce seuil et n’est alors pas analysé. Les templates (Blade, Twig, Nunjucks, Handlebars, Liquid, MDX) ne comptent d’aucun côté : les vues Blade d’une application Laravel ne la font donc pas passer sous ce seuil.

Ce qui compte comme un dépôt frontend

Agnes compte les lignes des fichiers HTML, CSS (y compris SCSS, Sass et Less), JavaScript, TypeScript, Vue, Svelte et Astro, et analyse un dépôt lorsqu’au moins 60 % de ses lignes de code source sont dans ces langages. Les dossiers générés et embarqués comme node_modules, dist, .next, .nuxt, .svelte-kit et .astro sont ignorés.

Les vérifications viennent d’outils open source. Découvrez lesquels, et ce que chacun alimente, sur la page Outils