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.
| Framework | Abhängigkeiten & SicherheitAdvisories, Lizenzen, Geheimnisse | CodequalitätLinting, Duplikate, Komplexität | Templates & StylesMarkup und CSS | Toter CodeUngenutzte Dateien und Exporte | BarrierefreiheitPro 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