Framework-Abdeckung

Was Agnes versteht, und was noch nicht

Agnes analysiert den Quellcode deines Repositorys, ohne ihn auszuführen. Was geprüft werden kann, hängt deshalb von den Dateien und Konventionen deines Frameworks ab. Diese Seite zeigt, wo die Abdeckung vollständig ist, wo sie teilweise ist und was noch fehlt.

Abdeckung nach Framework

Die Prüfung der Abhängigkeiten funktioniert für jedes Framework, weil sie deine Lockfile liest. Die anderen Prüfungen hängen von den Dateien und Konventionen des Frameworks ab.

Welche Prüfungen Agnes für jedes Framework ausführt
FrameworkAbhängigkeiten & SicherheitAdvisories, Lizenzen, GeheimnisseCodequalitätLinting, Duplikate, KomplexitätTemplates & StylesMarkup und CSSToter CodeUngenutzte Dateien und ExporteBarrierefreiheitPro Projekt zuschaltbar
HTML, CSS and JavaScript Unterstützt Unterstützt Unterstützt Unterstützt Unterstützt
React (Vite, Create React App) Unterstützt Unterstützt Unterstützt Unterstützt Unterstützt
Next.js Unterstützt Unterstützt Unterstützt Unterstützt Unterstützt
TanStack Start Unterstützt Unterstützt Unterstützt Unterstützt Unterstützt
React Router and Remix Unterstützt Unterstützt Unterstützt Unterstützt Unterstützt
Solid, Qwik and Preact Unterstützt Teilweise Unterstützt Teilweise Teilweise
Vue Unterstützt Unterstützt Unterstützt Unterstützt Unterstützt
Nuxt Unterstützt Unterstützt Unterstützt Teilweise Unterstützt
Svelte Unterstützt Unterstützt Unterstützt Unterstützt Unterstützt
SvelteKit Unterstützt Unterstützt Unterstützt Unterstützt Unterstützt
Astro Unterstützt Unterstützt Unterstützt Unterstützt Unterstützt
Angular Unterstützt Unterstützt Unterstützt Unterstützt Unterstützt

Unterstützt heißt, dass die Prüfung läuft und die Konventionen des Frameworks kennt. Teilweise heißt, dass sie mit den unten beschriebenen Einschränkungen läuft. Noch nicht heißt, dass die Prüfung für dieses Framework übersprungen wird.

Gut zu wissen

Frameworks mit einer Einschränkung oder einer Konvention, die eine Erklärung wert ist.

  • TanStack Start

    Routen und der generierte Routenbaum zählen als Einstiegspunkte, daher werden Routendateien nie als ungenutzt gemeldet. Die eigenen Pakete des Frameworks werden nicht darauf geprüft, ob sie ungenutzt sind.

  • React Router and Remix

    Die Routen im app-Ordner und die in routes.ts genannten Dateien zählen als Einstiegspunkte. routes.ts wird als Text gelesen, nie ausgeführt. Bei Routen, die mit Code gebaut werden, etwa mit Schleifen oder Hilfsfunktionen, können die Dateien daher als ungenutzt gemeldet werden.

  • Solid, Qwik and Preact

    Wird als normales TypeScript und JSX analysiert. Wir haben diese Frameworks nicht gezielt getestet. React-spezifische Regeln können daher Dinge markieren, die hier in Ordnung sind, und die Ergebnisse zu totem Code hängen von einer index.html oder einem Einstiegspunkt in der package.json ab.

  • Vue

    Neben den Prüfungen für Code und Templates markiert Agnes Props, die eine Komponente verändert, Refs ohne .value und v-html (ein Sicherheitsbefund zur Prüfung). Style-Blöcke werden unabhängig von ihrem lang gelintet. Deprecation-Warnungen von Vue 2 werden weggelassen.

  • Nuxt

    Pages, Layouts, Middleware, Plugins und Servercode zählen als Einstiegspunkte. Ebenso die Ordner components, composables, utils und stores, weil Nuxt sie automatisch importiert. Ungenutzter Code in diesen Ordnern wird daher nicht gemeldet.

  • Svelte

    Die eigenen Warnungen des Svelte-Compilers zu Reaktivität und ungenutzten Styles werden gemeldet, dazu Regeln von eslint-plugin-svelte wie fehlende each-Keys und {@html} (ein Sicherheitsbefund zur Prüfung). Die Regel, die jeden internen Link markiert, weil er resolve() nicht verwendet, ist als zu laut weggelassen.

  • Astro

    Pages sind Einstiegspunkte, und bei Komponenten werden Scripts, Templates und Styles geprüft. Die Prüfungen zur Barrierefreiheit für Astro decken die Templates ab.

  • Angular

    TypeScript, Templates und Inline-Templates werden mit den empfohlenen Lint-Regeln von Angular geprüft, und Komponenten-Stylesheets werden wie alle anderen gelintet (::ng-deep, :host und :host-context werden verstanden). Inline-Styles im Komponenten-Decorator werden nicht gelintet. Templates werden über die templateUrl jeder Komponente gefunden, Dateinamen spielen also keine Rolle.

Bekannte Lücken

Diese hängen nicht an einem Framework. Wir listen sie auf, damit du weißt, was ein guter Score aussagt und was nicht.

  • Stylus

    Stylus-Dateien werden nicht analysiert. Der einzige verfügbare Parser für Stylus wird nicht mehr gepflegt und liest normale Stylus-Syntax falsch. SCSS, Sass und Less werden mit den Standardregeln für CSS und SCSS gelintet.

  • Wartbarkeitsscore von Komponenten-Scripts

    Die kognitive Komplexität wird in den Scripts von .vue-, .svelte- und .astro-Dateien gemessen, aber der Wartbarkeitsscore pro Datei liest nur JavaScript- und TypeScript-Dateien.

  • Eine Lockfile ist nötig

    Die Prüfungen von Abhängigkeiten, Advisories und Lizenzen lesen package-lock.json, yarn.lock, pnpm-lock.yaml oder bun.lock, die Advisory-Prüfung liest außerdem composer.lock. Ohne Lockfile fehlt dieser Teil des Scores.

  • npm, dazu Composer-Advisories

    Composer-Pakete werden auf bekannte Advisories geprüft, aber nicht darauf, ob sie veraltet oder deprecated sind, und nicht auf ihre Lizenzen. Abhängigkeiten aus anderen Ökosystemen oder aus Deno werden nicht geprüft.

  • Deine eigene Lint-Konfiguration wird nicht gelesen

    Agnes führt seine Tools mit eigenen Regeln in einer Sandbox aus und führt nie deine Konfigurationsdateien aus. Projektspezifische Regeln für ESLint, Biome oder Stylelint ändern den Bericht daher nicht.

  • Vor allem Frontend-Repositories

    Mindestens 60 % der Quellcodezeilen müssen Frontend-Code sein. Ein Monorepo mit viel Backend-Code kann darunter fallen und wird dann nicht analysiert. Templates (Blade, Twig, Nunjucks, Handlebars, Liquid, MDX) zählen auf keiner Seite, die Blade-Views einer Laravel-App ziehen sie also nicht darunter.

Was als Frontend-Repository zählt

Agnes zählt die Zeilen von HTML-, CSS- (einschließlich SCSS, Sass und Less), JavaScript-, TypeScript-, Vue-, Svelte- und Astro-Dateien und analysiert ein Repository, wenn mindestens 60 % seiner Quellcodezeilen in diesen Sprachen sind. Generierte und mitgelieferte Ordner wie node_modules, dist, .next, .nuxt, .svelte-kit und .astro werden ignoriert.

Die Prüfungen stammen aus Open-Source-Tools. Welche das sind und wozu sie jeweils beitragen, steht auf der Tools-Seite