20 statische Analysetools, die jedes TypeScript-Team braucht

TypeScript-Tools zur statischen Analyse: Der vollständige Leitfaden für Entwicklerteams

Das Typsystem von TypeScript erkennt eine Reihe wichtiger Fehler, bevor der Code ausgeführt wird: Typkonflikte, fehlende Eigenschaften und fehlerhafte Funktionssignaturen. Was es jedoch nicht erkennt, sind Sicherheitslücken, die vom Datenfluss innerhalb der Anwendung abhängen, Architekturfehler, die sich mit der Zeit durch die Verschmelzung von Teams anhäufen, nicht mehr benötigte Exporte, die lange im Code verbleiben, nachdem ihre Aufrufer entfernt wurden, und Fehler in der asynchronen Programmierung, die zwar korrekt kompilieren, aber unter bestimmten Laufzeitbedingungen zu Fehlern führen. Statische Analysetools schließen diese Lücken, und die Wahl der richtigen Kombination hängt davon ab, wonach genau gesucht wird.

Dieser Leitfaden behandelt die wichtigsten Tools für TypeScript-Teams im Jahr 2026: die Linting-Ebene (ESLint mit typescript-eslint, Biome, OxcLint), die Sicherheitsebene (Semgrep, Snyk Code, SonarQube), die Architekturebene (Dependency-Cruiser, Deptrac, Nx), die Ebene für toten Code (Knip) und die Ebene für die detaillierte Codeanalyse (ts-morph, der TypeScript-Compiler selbst). Für jedes Tool wird erläutert, was es genau leistet, wie es konfiguriert wird und wann es für den jeweiligen Zweck ungeeignet ist.

Entwickelt für Codebasen, die niemand versteht

SMART TS XL Erzeugt automatisch bahnbrechende Änderungen in Ihrer gesamten Codebasis.

Erfahren Sie mehr

TypeScript-Tools zur statischen Analyse: Vergleichstabelle

Bevor wir uns mit den einzelnen Tools befassen, ordnet die folgende Tabelle jedes Tool seiner Hauptfunktion, seiner Eignung für CI und seinem idealen Anwendungsfall zu. Kein einzelnes Tool deckt alle Dimensionen ab; eine effektive TypeScript-Qualitätsanalyse erfordert die Kombination mehrerer Tools.

WerkzeugPrimärfunktionCI-geeignetKostenAm besten geeignet für
ESLint + typescript-eslintLinting, Stil, typbezogene RegelnJaFreiTeamweite Konventionen, asynchrone Typsicherheit
BiomLinting + FormatierungJaFreiESLint + Schönerer Ersatz, Geschwindigkeit
OxcLintLinting (ESLint-kompatibel)JaFreiMonorepos, die schnelle Lint-Zeiten benötigen
TypeScript-Compiler (tsc)TypprüfungJaFreiTypfehler, strikte Mode-Erzwingung
SemgrepSAST, individuelle MusterJaKostenlos + kostenpflichtigSicherheitsüberprüfung, benutzerdefinierte Organisationsregeln
Snyk-CodeSAST, AbhängigkeitssicherheitJaKostenlos + kostenpflichtigSicherheitsorientierte Teams, IDE-Integration
SonarQube / SonarCloudQualitätskontrolle, TrendverfolgungJaKostenlos + kostenpflichtigDashboards in Unternehmensqualität
SonarLintQualitätsfeedback auf IDE-EbeneNur IDEFreiHinweise zu Sicherheit und Qualität im Text
AbhängigkeitskreuzerDurchsetzung von AbhängigkeitsgraphenJaFreiArchitekturregelvalidierung
DeptracDurchsetzung der SchichtgrenzenJaFreiSaubere Architektur, DDD-Grenzen
NxMonorepo-AbhängigkeitsmanagementJaKostenlos + kostenpflichtigMonorepo-Modulgrenzen
SchnittToter Code und ungenutzte ExporteJaFreiReduzierung ungenutzten Codes in großem Umfang
ts-morphProgrammatische TS-AST-AnalyseAusgewähltes PersonalFreiBenutzerdefinierte Analysen, Codemodifikationen, Werkzeuge

Schicht 1: Fussel und Stil

ESLint mit typescript-eslint

ESLint bleibt die Grundlage des TypeScript-Lintings. typescript-eslint Durch das Paket erhält es Zugriff auf die Typinformationen von TypeScript und kann Regeln durchsetzen, die einen Typkontext erfordern. Besonders wertvoll sind dabei die asynchronen Regeln, die häufige Promise-Fehler abfangen.

bash

npm install --save-dev typescript-eslint

Javascript

// eslint.config.js
import tseslint from "typescript-eslint";

export default tseslint.config(
  ...tseslint.configs.strictTypeChecked,
  {
    languageOptions: {
      parserOptions: {
        project: true,
        tsconfigRootDir: import.meta.dirname,
      },
    },
    rules: {
      // Async safety rules -- highest value TypeScript-specific rules
      "@typescript-eslint/no-floating-promises": "error",
      "@typescript-eslint/await-thenable": "error",
      "@typescript-eslint/no-misused-promises": "error",
      "@typescript-eslint/require-await": "warn",
      // Type safety
      "@typescript-eslint/no-explicit-any": "warn",
      "@typescript-eslint/no-unsafe-assignment": "error",
      "@typescript-eslint/no-unsafe-return": "error",
    },
  }
);

Die vier oben genannten asynchronen Regeln stellen den größten Mehrwert dar, den typescript-eslint gegenüber dem einfachen ESLint bietet. Sie fangen Folgendes ab: nicht behandelte Promises (schwebende Promises), await angewendet auf Nicht-Promise-Werte, Promises, die an Callbacks übergeben werden, die synchrone Funktionen erwarten, und asynchrone Funktionen, die niemals verwendet werden awaitDies sind Muster, die zwar problemlos kompiliert werden, aber unter bestimmten Bedingungen zu Laufzeitfehlern führen.

Was ESLint nicht leisten kann : Analyse des Datenflusses zwischen Dateien, Durchsetzung architektonischer Grenzen, Verfolgung von Sicherheitslücken oder Erkennung nicht mehr benötigter Exporte. Hierfür sind die darunterliegenden Schichten erforderlich.

Biome: Das moderne ESLint + schönere Alternative

Biome ersetzt sowohl ESLint als auch Prettier durch eine einzige, auf Rust basierende Binärdatei, die 25- bis 35-mal schneller läuft. Es unterstützt JavaScript, TypeScript, JSX und JSON. Für neue Projekte oder Teams, die von der Plugin-Komplexität und der langsamen Performance von ESLint in großen Codebasen frustriert sind, ist Biome die leistungsstärkste moderne Alternative.

bash

npm install --save-dev --save-exact @biomejs/biome
npx @biomejs/biome init

bash

# Check and format in one pass
npx @biomejs/biome check --write src/

# CI mode -- no modifications, exit non-zero on any finding
npx @biomejs/biome ci src/

Das Plugin-Ökosystem von Biome ist kleiner als das von ESLint, was für Teams mit umfangreichen benutzerdefinierten Regeln oder frameworkspezifischen Plugins relevant ist. Für Teams, die lediglich die ESLint-Kernregeln und die Prettier-Formatierung nutzen, bietet Biome eine gleichwertige Testabdeckung in einem Bruchteil der Ausführungszeit.

OxcLint: Geschwindigkeit steht bei ESLint an erster Stelle

OxcLint (Teil des Oxc-Projekts) führt ESLint-kompatible Regeln 50- bis 100-mal schneller aus. Es ersetzt nicht das gesamte ESLint-Ökosystem, sondern ist die schnellste Option für CI-Pipelines, bei denen die Linting-Zeit einen Flaschenhals darstellt.

bash

npm install --save-dev oxlint
npx oxlint src/

OxcLint ist die richtige Wahl für große Monorepos, bei denen Standard-ESLint Minuten benötigt und die Latenz der Feedbackschleife die Qualität von Pull Requests beeinträchtigt. Es funktioniert am besten parallel zu ESLint, anstatt es zu ersetzen. Verwenden Sie OxcLint für den schnellen Feedbackpfad und ESLint für die vollständige Regelabdeckung vor dem Merge-Vorgang.

Ebene 2: Typüberprüfung, der TypeScript-Compiler

Der TypeScript-Compiler (tsc) ist nicht nur ein Build-Tool, sondern die primäre statische Analyse-Engine für Typkorrektheit. Die Aktivierung des strikten Modus aktiviert die Einstellungen, die die meisten realen Fehler aufdecken:

JSON

{
  "compilerOptions": {
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "exactOptionalPropertyTypes": true,
    "useUnknownInCatchVariables": true
  }
}

bash

# Type-check only, no emit -- ideal for CI
npx tsc --noEmit

noUnusedLocals und noUnusedParameters Auf Compilerebene werden ungenutzte Variablen und Funktionsparameter abgefangen. useUnknownInCatchVariables (TypeScript 4.4+) Typen, die Ausnahmen abfangen, als unknown statt any, wodurch eine explizite Typeinschränkung vor der Verwendung erzwungen wird.

TypeScript-Kontrollflussanalyse ist eine integrierte Funktion des Compilers zur Typeneinschränkung innerhalb bedingter Verzweigungen. Es handelt sich nicht um ein separates Werkzeug, das Folgendes ermöglicht: strict Der Modus gewährleistet die uneingeschränkte Anwendung. Die Kontrollflussanalyse des Compilers versteht Typüberprüfungen, typeof Schecks, instanceofund diskriminierende Gewerkschaftsmuster.

Die Einschränkung von tsc : Der TypeScript-Compiler findet keine Sicherheitslücken, Architekturverletzungen oder tote Exporte. Er findet Typfehler, und zwar eindeutig.

Schicht 3: Sicherheit, SAST für TypeScript

Semgrep: Musterbasierte Sicherheitsprüfung

Semgrep findet Sicherheitslücken durch Code-Mustervergleich. Für TypeScript kann es SQL-Injection, XSS, fest codierte Anmeldeinformationen und unsicheren Code erkennen. eval Nutzung, Prototypenverschmutzung und unsichere Express.js-Konfigurationen, Muster, die zwar korrekt kompilieren, aber ausnutzbare Sicherheitslücken einführen.

YAML

# Custom rule: flag user input in SQL queries (TypeScript)
rules:
  - id: ts-sql-injection-risk
    patterns:
      - pattern: |
          const query = `SELECT ... ${$USER_INPUT} ...`;
    message: "User input directly interpolated into SQL -- use parameterized queries"
    languages: [typescript]
    severity: ERROR

bash

# Run with the community TypeScript security rules
semgrep scan --config=p/typescript --config=p/owasp-top-ten src/

Semgrep ergänzt ESLint, es steht nicht im Wettbewerb. ESLint erzwingt Konventionen; Semgrep findet Sicherheitslücken. Die meisten TypeScript-Teams, denen Sicherheit wichtig ist, sollten beide Programme verwenden.

Snyk Code: ML-basierter SAST mit IDE-Integration

Snyk Code führt SAST mit einer maschinellen Lernalgorithmus-basierten Analyse-Engine durch, die Datenflüsse zwischen Dateien verfolgt. Es integriert sich in VS Code und JetBrains IDEs und zeigt die Ergebnisse direkt im Code an, anstatt auf einen CI-Lauf warten zu müssen.

bash

npm install --save-dev snyk
npx snyk auth
npx snyk code test

Der Fokus von Snyk Code auf die Entwicklererfahrung, das integrierte IDE-Feedback, die Korrekturvorschläge zu jedem gefundenen Fehler und die Beispiele für die Behebung machen es zur besseren Wahl, wenn Sicherheitsschulung genauso wichtig ist wie die Sicherheitserkennung.

SonarQube und SonarLint: Qualitätsgates und Trendverfolgung

SonarQube bietet kontinuierliche Codequalitätsanalyse mit Dashboard, Trendverfolgung und Pull-Request-Dekoration. Für TypeScript erkennt es Fehler, Code-Smells, Sicherheitslücken und Duplikate. SonarLint ist die IDE-Erweiterung, die SonarQube-Regeln lokal bereitstellt.

Für TypeScript-Teams ist SonarCloud (die Cloud-basierte Version) der einfachere Weg: kostenlos für öffentliche Repositories, mit CI-Integration über GitHub Actions oder GitLab CI innerhalb von Minuten.

YAML

# .github/workflows/sonar.yml
- name: SonarCloud Scan
  uses: SonarSource/sonarcloud-github-action@master
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

Der Hauptvorteil von SonarQube gegenüber reinem Linting liegt in seinem Trendmodell: Es zeigt, wie sich die Codequalität im Laufe der Zeit entwickelt, welche Komponenten sich verschlechtern und wie hoch der Qualitäts-Gate-Score für jeden Pull Request ist. Diese Management-relevanten Metriken sind das, was SonarQube leistet und ESLint und Semgrep nicht können.

Ebene 4: Architekturanalyse

Dependency-Cruiser: Modulgrenzenregeln durchsetzen

Dependency-Cruiser prüft, ob Ihr Importgraph den definierten Architekturregeln entspricht. Es generiert visuelle Abhängigkeitsgraphen und führt zu einem CI-Fehler, wenn Code gegen Modulgrenzen verstößt.

Javascript

// .dependency-cruiser.cjs
module.exports = {
  forbidden: [
    {
      name: "no-circular",
      severity: "error",
      comment: "Circular dependencies make code hard to test and maintain",
      from: {},
      to: { circular: true },
    },
    {
      name: "no-ui-in-domain",
      severity: "error",
      comment: "Domain modules must not import from UI layer",
      from: { path: "^src/domain" },
      to: { path: "^src/ui" },
    },
    {
      name: "no-external-in-shared",
      severity: "warn",
      comment: "Shared utilities should minimize external dependencies",
      from: { path: "^src/shared" },
      to: { pathNot: "^(src|node_modules/(lodash|date-fns))" },
    },
  ],
};

bash

npx depcruise --validate .dependency-cruiser.cjs src/

Dependency-Cruiser beantwortet direkt die Anfragen nach dem „react dependency analysis cli tool“ in den Search Console-Daten und ist das Standardwerkzeug zum Generieren und Validieren von Abhängigkeitsgraphen in TypeScript/React-Projekten.

Deptrac: Schichtbasierte Grenzüberwachung

Deptrac erzwingt Architekturschichten und stellt so sicher, dass Persistenzcode nicht aus der Präsentation importiert werden kann, dass Domänenobjekte nicht von der Infrastruktur abhängen und dass Modulgrenzen im gesamten Code eingehalten werden.

YAML

# deptrac.yaml
parameters:
  layers:
    - name: Domain
      collectors:
        - type: directory
          value: src/domain
    - name: Application
      collectors:
        - type: directory
          value: src/application
    - name: Infrastructure
      collectors:
        - type: directory
          value: src/infrastructure
  ruleset:
    Domain:
      - ~Infrastructure  # Domain must not depend on Infrastructure
    Application:
      - Domain
    Infrastructure:
      - Application
      - Domain

Deptrac ist besonders wertvoll in Projekten, die den Mustern Clean Architecture, DDD oder Hexagonal Architecture folgen, wo die Isolation der Schichten eine Designvorgabe und nicht nur eine Frage der Präferenz ist.

Nx: Abhängigkeitsmanagement auf Monorepo-Ebene

Für TypeScript-Monorepos bietet Nx die Durchsetzung von Modulgrenzen, die Erkennung betroffener Builds und die Visualisierung des Abhängigkeitsgraphen über alle Projekte im Repository hinweg.

JSON

// .eslintrc.json -- Nx module boundary rules
{
  "rules": {
    "@nx/enforce-module-boundaries": [
      "error",
      {
        "allow": [],
        "depConstraints": [
          { "sourceTag": "scope:shared", "onlyDependOnLibsWithTags": ["scope:shared"] },
          { "sourceTag": "scope:feature", "onlyDependOnLibsWithTags": ["scope:shared", "scope:feature"] },
          { "sourceTag": "scope:app", "onlyDependOnLibsWithTags": ["scope:shared", "scope:feature"] }
        ]
      }
    ]
  }
}

Nx's affected Die Befehle führen nur die Tests und Linting-Prüfungen aus, die für geänderte Module relevant sind, wodurch die CI-Zeit in großen Monorepos deutlich reduziert wird.

Schicht 5: Erkennung von totem Code

Knip: Unbenutzte Exporte, Dateien und Abhängigkeiten finden

Knip analysiert den gesamten Modulgraphen, um ungenutzte Exporte, ungenutzte Dateien und ungenutzte Ressourcen zu identifizieren. package.json Abhängigkeiten, die Art der Codeansammlung, die ESLint no-unused-vars kann nichts finden, da es nur innerhalb einer Datei sucht.

bash

npm install --save-dev knip
npx knip

JSON

// knip.json
{
  "entry": ["src/index.ts", "src/**/*.test.ts"],
  "project": ["src/**/*.ts"],
  "ignore": ["src/generated/**"],
  "ignoreDependencies": ["vitest"]
}

Knip wird in den SC-Daten direkt als „Dead Code Detection Unused Exports JavaScript TypeScript“ gesucht. Es ist das derzeit leistungsfähigste Tool zur Identifizierung von totem Code auf Modulebene in TypeScript-Projekten.

Schicht 6: Programmatische Analyse, ts-morph

ts-morph ist ein API-Wrapper für den TypeScript-Compiler, der das Schreiben von benutzerdefinierten Analysen, Codemodifikationen und Werkzeugen für den TypeScript-AST vereinfacht. Es wird direkt in den SC-Daten als „ts-morph“ und „ts morph“ gesucht.

Typoskript

import { Project } from "ts-morph";

const project = new Project({ tsConfigFilePath: "tsconfig.json" });

// Find all async functions that never await anything
const suspiciousAsyncFns: string[] = [];

for (const sourceFile of project.getSourceFiles()) {
  for (const fn of sourceFile.getFunctions()) {
    if (fn.isAsync()) {
      const hasAwait = fn.getDescendantsOfKind(
        SyntaxKind.AwaitExpression
      ).length > 0;
      if (!hasAwait) {
        suspiciousAsyncFns.push(
          `${sourceFile.getFilePath()}:${fn.getName() ?? "anonymous"}`
        );
      }
    }
  }
}

console.log("Async functions with no await:", suspiciousAsyncFns);

ts-morph ist kein sofort einsatzbereites Analysetool, sondern eine Bibliothek, mit der man ein solches Tool entwickeln kann. Es eignet sich für Teams, die über die Möglichkeiten bestehender Tools hinausgehende, individuelle Analysen benötigen: Migrationsskripte, benutzerdefinierte Architekturvalidatoren, automatisiertes Refactoring oder Codegenerierungspipelines.

Statische Analyse von TypeScript Async/Await

Die Daten der Search Console zeigen eine Häufung von Suchanfragen rund um „TypeScript Static Analysis Async Await Paper Tool“ und „TypeScript Static Analysis Async Await Vulnerability Paper Tool“. Diese Suchanfragen spiegeln wider, dass Anwender nach Tools suchen, die asynchrone Programmierfehler auf Typebene verstehen.

Die praktische Antwort für produktive TypeScript-Teams sind die vier asynchronen spezifischen Regeln von typescript-eslint (no-floating-promises, await-thenable, no-misused-promises, require-await) kombiniert mit strictNullChecks und useUnknownInCatchVariablesZusammen fangen diese die häufigsten asynchronen Typfehler ab, ohne dass akademische Forschungswerkzeuge benötigt werden.

Für Teams, die Sicherheitsforschung zu asynchronen Schwachstellenmustern betreiben, sind TAJS und Jelly akademische statische Analysatoren, die die asynchrone Ausführungssemantik von JavaScript modellieren. Es handelt sich jedoch um Forschungswerkzeuge und nicht um Werkzeuge für die Produktionsentwicklung.

Angular und React: Framework-spezifische statische Analyse

Für Angular-Teams, @angular-eslint Bietet Angular-spezifische Linting-Regeln für Komponentenmuster, Template-Analyse und Service-Injection. Es integriert sich in die oben genannte ESLint + typescript-eslint-Konfiguration.

Für React-Teams, hat das eslint-plugin-react, eslint-plugin-react-hooks und eslint-plugin-jsx-a11y Die Plugins decken React-spezifische Muster ab. Dependency-Cruiser übernimmt die Analyse von React-spezifischen Abhängigkeitsgraphen und ist das Tool hinter den Abfragen des „react dependency analysis cli tool“ in den SC-Daten.

IDE-Integration: Tools für VS Code und JetBrains

Die Suchanfragen „Beste Tools zur Codequalitätsverbesserung für die VS Code-Integration“ und „Beste Tools zur Codequalitätsverbesserung für die IDE-Integration“ spiegeln einen realen Bedarf wider: CI-Feedback kommt zu spät, um Verhaltensänderungen zu bewirken. Die in die IDE integrierte Analyse bietet den kürzesten Feedback-Kreislauf.

VS Code : ESLint-Erweiterung mit Clippy-Parität für Rust-Analyzer, SonarLint-Erweiterung für Inline-SonarQube-Regeln, Snyk-Erweiterung für Sicherheitsbefunde und der integrierte TypeScript-Sprachdienst für Feedback auf Typebene.

JetBrains (WebStorm/IntelliJ) : WebStorm bietet integrierte TypeScript-Unterstützung, die Typfehler direkt im Code anzeigt, sowie Integrationen mit ESLint, Prettier und SonarLint. Das integrierte Inspektionssystem deckt viele der gleichen Muster wie die ESLint-Regeln ab.

VS Code-Konfiguration für maximale TypeScript-Statikanalyseabdeckung :

JSON

// .vscode/settings.json
{
  "typescript.tsdk": "node_modules/typescript/lib",
  "typescript.enablePromptUseWorkspaceTsdk": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  },
  "eslint.validate": ["javascript", "typescript", "typescriptreact"],
  "sonarlint.connectedMode.project": {
    "connectionId": "my-sonarcloud",
    "projectKey": "my-org_my-project"
  }
}

Wie SMART TS XL Erweitert die TypeScript-Analyse unternehmensweit

Die oben genannten Tools decken TypeScript innerhalb eines TypeScript-Projekts ab. In Organisationen, in denen TypeScript-Dienste mit COBOL-Batchprogrammen, Java-APIs, Python-Datenpipelines oder älteren Mainframe-Systemen interagieren, können Tools für einzelne Sprachen die sprachübergreifenden Abhängigkeiten nicht erkennen.

SMART TS XL statische Code-Analyse Es umfasst TypeScript sowie alle anderen Sprachen in Unternehmensumgebungen – COBOL, JCL, Java, Python, RPG, SQL – und erstellt ein einheitliches Abhängigkeitsmodell für alle diese Sprachen. Wenn ein TypeScript-Dienst eine API aufruft, die von einem COBOL-Programm unterstützt wird, SMART TS XL kann diese Beziehung nachverfolgen und einbeziehen in Wirkungsanalyse bevor an irgendeiner Komponente eine Änderung vorgenommen wird.

Die unternehmensweite Suchfunktion ermöglicht die Abfrage der gesamten mehrsprachigen Codebasis: Finden Sie innerhalb von Sekunden jeden TypeScript-Import eines bestimmten Moduls, jede Java-Methode, die von einem TypeScript-Dienst aufgerufen wird, jedes COBOL-Copybook, das Daten an eine von TypeScript genutzte API liefert, über Millionen von Codezeilen in beliebiger Sprachkombination.

Für Unternehmensteams, die TypeScript als eine Sprache in einem größeren Portfolio einsetzen, SMART TS XL bietet architektonische Sichtbarkeit und sprachübergreifende Kompatibilität Abhängigkeitszuordnung Das veranlasst TypeScript-spezifische Tools, ihren Teil des Systems zu untersuchen, während SMART TS XL sieht das Ganze.

Den richtigen Stack zusammenstellen

Kein einzelnes Tool deckt alle Qualitätsdimensionen für TypeScript ab. Der richtige Ansatz ist mehrschichtig, wobei jede Schicht auf eine bestimmte Problemklasse abzielt:

Minimaler funktionsfähiger Stack (neues Projekt, kleines Team):

  • TypeScript-Strict-Modus
  • ESLint mit typescript-eslint asynchronen Regeln
  • npm audit für Abhängigkeitsschwachstellen

Produktionsanwendungs-Stack (mittelgroßes Team, sicherheitsbewusst):

  • Alles oben, plus:
  • Biome oder Prettier zum Formatieren
  • Semgrep für Sicherheit SAST
  • Knip für toten Code
  • SonarCloud für hochwertige Trendanalyse

Enterprise-/Monorepo-Stack (großes Team, architektonische Einschränkungen):

  • Alles oben, plus:
  • Abhängigkeits-Cruiser zur Durchsetzung von Modulgrenzen
  • Nx für die Optimierung von Builds, die von Monorepos betroffen sind
  • Deptrac zur Validierung von Schichtgrenzen
  • SonarQube (selbstgehostet) für hochwertige On-Premise-Gates

Polyglot-Unternehmensarchitektur (TypeScript neben Legacy-Systemen):

  • Alles oben, plus:
  • SMART TS XL für sprachübergreifende Wirkungsanalysen und Abhängigkeitsanalysen