모든 TypeScript 팀에 필요한 20가지 정적 분석 도구

TypeScript 정적 분석 도구: 개발팀을 위한 완벽 가이드

TypeScript의 타입 시스템은 코드 실행 전에 타입 불일치, 속성 누락, 잘못된 함수 시그니처와 같은 중요한 버그 유형을 잡아냅니다. 하지만 그 외의 모든 것을 잡아낼 수는 없습니다. 예를 들어, 애플리케이션 내 데이터 흐름 방식에 따라 발생하는 보안 취약점, 팀 간 경계가 모호해지면서 시간이 지남에 따라 누적되는 아키텍처 위반, 호출자가 제거된 후에도 코드베이스에 오랫동안 남아 있는 사용되지 않는 내보내기, 컴파일은 제대로 되지만 특정 런타임 조건에서 오류가 발생하는 비동기 프로그래밍 오류 등이 있습니다. 정적 분석 도구는 이러한 부분을 보완하며, 어떤 도구를 선택할지는 실제로 무엇을 찾고자 하는지에 따라 달라집니다.

이 가이드에서는 2026년 TypeScript 팀에 중요한 도구들을 다룹니다. 여기에는 린팅 계층(ESLint와 typescript-eslint, Biome, OxcLint), 보안 계층(Semgrep, Snyk Code, SonarQube), 아키텍처 계층(Dependency-Cruiser, Deptrac, Nx), 사용되지 않는 코드 계층(Knip), 그리고 심층 분석 계층(ts-morph, TypeScript 컴파일러 자체)이 포함됩니다. 각 도구에 대해 실제 기능, 설정 방법, 그리고 어떤 경우에 적합하지 않은지 자세히 살펴봅니다.

아무도 이해하지 못하는 코드베이스를 위해 만들어졌습니다.

SMART TS XL 코드베이스 전체에 걸쳐 호환성을 깨뜨리는 변경 사항을 자동으로 알려줍니다.

더 알아보기

TypeScript 정적 분석 도구: 비교표

개별 도구를 자세히 살펴보기 전에 아래 표에서 각 도구의 주요 기능, CI 적합성 및 이상적인 사용 사례를 확인할 수 있습니다. 모든 측면을 아우르는 단일 도구는 없으며, 효과적인 TypeScript 품질 분석에는 여러 도구를 조합하여 사용하는 것이 필요합니다.

수단주요 기능CI 적합비용지원 기기
ESLint + typescript-eslint린팅, 스타일, 타입 인식 규칙가능무료팀 전체 규칙, 비동기 타입 안전성
바이오 메린팅 + 포맷팅가능무료ESLint + Prettier 대체품, 속도 향상
옥슬린트린팅(ESLint 호환)가능무료빠른 린트 검사 시간이 필요한 모노레포
타입스크립트 컴파일러(tsc)유형 확인가능무료타입 오류, 엄격한 모드 적용
셈그렙SAST, 사용자 정의 패턴가능무료 + 유료보안 검사, 사용자 지정 조직 규칙
Snyk 코드SAST, 종속성 보안가능무료 + 유료보안 우선 팀, IDE 통합
소나큐브 / 소나클라우드품질 관리, 추세 추적가능무료 + 유료기업용 고품질 대시보드
소나린트IDE 수준의 품질 피드백IDE 전용무료인라인 보안 및 품질 관련 팁
종속성-크루저의존성 그래프 강제 적용가능무료아키텍처 규칙 검증
뎁트랙레이어 경계 강제 적용가능무료클린 아키텍처, DDD 경계
Nx모노레포 종속성 관리가능무료 + 유료모노레포 모듈 경계
자르다사용되지 않는 코드 및 미사용 내보내기가능무료대규모로 사용되지 않는 코드 줄이기
ts-모프프로그램 방식 TS AST 분석선택적인무료사용자 정의 분석, 코드 수정, 도구

1단계: 보풀 제거 및 스타일링

typescript-eslint를 사용한 ESLint

ESLint는 여전히 TypeScript 린팅의 기반입니다. typescript-eslint 이 패키지를 사용하면 TypeScript의 타입 정보에 접근할 수 있고 타입 컨텍스트가 필요한 규칙을 적용할 수 있는데, 그중 가장 유용한 것은 일반적인 Promise 오류를 잡아내는 비동기 관련 규칙입니다.

세게 때리다

npm install --save-dev typescript-eslint

자바 스크립트

// 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",
    },
  }
);

위의 네 가지 비동기 규칙은 typescript-eslint가 일반 ESLint에 비해 제공하는 가장 가치 있는 추가 기능입니다. 이 규칙들은 처리되지 않은 프로미스(떠다니는 프로미스)를 잡아냅니다. await Promise가 아닌 값에 적용되거나, 동기 함수를 기대하는 콜백에 전달되는 Promise, 그리고 비동기 함수를 전혀 사용하지 않는 경우에 적용됩니다. await이러한 패턴들은 컴파일은 문제없이 되지만 특정 조건에서 런타임 오류를 발생시킵니다.

ESLint가 할 수 없는 것 : 파일 간 데이터 흐름 분석, 아키텍처 경계 적용, 보안 오염 추적 또는 비활성 내보내기 감지. 이러한 기능을 위해서는 하위 계층의 도구가 필요합니다.

Biome: 현대적인 ESLint + 더 보기 좋은 대체 프로그램

Biome은 ESLint와 Prettier를 하나의 Rust 기반 바이너리로 대체하며, 실행 속도는 25~35배 빠릅니다. JavaScript, TypeScript, JSX, JSON을 지원합니다. ESLint 플러그인의 복잡성과 대규모 코드베이스에서의 느린 성능에 불만을 느끼는 신규 프로젝트나 팀에게 Biome은 가장 강력한 최신 대안입니다.

세게 때리다

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

세게 때리다

# 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/

Biome의 플러그인 생태계는 ESLint보다 규모가 작습니다. 이는 사용자 지정 규칙이나 프레임워크별 플러그인이 많은 팀에게 중요한 요소입니다. 하지만 핵심 ESLint 규칙과 Prettier 포맷팅만 사용하는 팀의 경우, Biome은 훨씬 짧은 실행 시간으로 동등한 수준의 코드 검증을 제공합니다.

OxcLint: Speed-First ESLint 호환성

OxcLint(Oxc 프로젝트의 일부)는 ESLint와 호환되는 규칙을 50~100배 빠른 속도로 실행합니다. ESLint 생태계 전체를 대체하는 것은 아니지만, 린트 시간이 병목 현상인 CI 파이프라인에서 가장 빠른 옵션으로 사용할 수 있습니다.

세게 때리다

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

OxcLint는 표준 ESLint 실행에 몇 분이 소요되고 피드백 루프 지연으로 인해 풀 리퀘스트 품질이 저하되는 대규모 모노레포 환경에 적합한 선택입니다. ESLint를 대체하기보다는 함께 사용하는 것이 가장 효과적이며, 병합 전 단계에서 빠른 피드백을 위해서는 OxcLint를, 전체 규칙 적용을 위해서는 ESLint를 실행하는 것이 좋습니다.

2단계: 타입 검사, TypeScript 컴파일러

타입스크립트 컴파일러(tsc)는 단순한 빌드 도구가 아니라, 타입 수준의 정확성을 검사하는 주요 정적 분석 엔진입니다. 엄격 모드를 활성화하면 실제 환경에서 발생하는 대부분의 버그를 잡아내는 설정이 적용됩니다.

JSON

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

세게 때리다

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

noUnusedLocals noUnusedParameters 컴파일러 수준에서 사용되지 않는 변수와 함수 매개변수를 찾아냅니다. useUnknownInCatchVariables (TypeScript 4.4 이상)에서 예외를 포착한 유형은 다음과 같습니다. unknown 보다는 any사용 전에 명시적인 유형 축소를 강제합니다.

TypeScript 제어 흐름 분석 컴파일러가 조건 분기 내에서 타입을 좁히는 데 사용할 수 있도록 제공하는 내장 기능입니다. 별도의 도구가 아니며, strict 이 모드는 엄격한 규칙이 적용되도록 보장합니다. 컴파일러의 제어 흐름 분석은 타입 가드를 이해합니다. typeof 체크 무늬, instanceof그리고 차별적인 노동조합 패턴.

tsc의 한계는 다음과 같습니다. TypeScript 컴파일러는 보안 취약점, 아키텍처 경계 위반 또는 사용되지 않는 내보내기를 찾아내지 않습니다. 타입 오류만 찾아내며, 그 오류는 명확하게 진단합니다.

3단계: 보안, TypeScript용 SAST

Semgrep: 패턴 기반 보안 스캐닝

Semgrep은 코드 패턴 매칭을 통해 보안 취약점을 찾아냅니다. TypeScript의 경우 SQL 인젝션, XSS, 하드코딩된 자격 증명, 안전하지 않은 코드 등을 탐지할 수 있습니다. eval 사용 방식, 프로토타입 오염, 그리고 안전하지 않은 Express.js 구성 패턴은 컴파일은 제대로 되지만 악용 가능한 취약점을 유발합니다.

# 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

세게 때리다

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

Semgrep은 ESLint와 경쟁하는 것이 아니라 상호 보완적인 도구입니다. ESLint는 규칙을 강제하는 반면, Semgrep은 보안 안티 패턴을 찾아냅니다. 보안에 관심 있는 대부분의 TypeScript 개발팀은 두 도구를 모두 실행해야 합니다.

Snyk Code: IDE 통합 기능을 갖춘 ML 기반 SAST

Snyk Code는 머신러닝 기반 분석 엔진을 사용하여 파일 전체의 오염 흐름을 추적하는 SAST(소프트웨어 안전 테스트)를 수행합니다. VS Code 및 JetBrains IDE에 통합되어 개발자가 CI 실행을 기다릴 필요 없이 코드를 작성하는 동안 분석 결과를 바로 표시합니다.

세게 때리다

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

Snyk Code는 개발자 경험에 중점을 두고 IDE 내에서 피드백을 제공하며, 각 발견 사항에 대한 수정 제안과 해결 방법을 제시하기 때문에 보안 탐지만큼 보안 교육이 중요한 경우에 더 나은 선택입니다.

SonarQube와 SonarLint: 품질 게이트 및 트렌드 추적

SonarQube는 대시보드, 트렌드 추적, 풀 리퀘스트 데코레이션 기능을 통해 지속적인 코드 품질 분석을 제공합니다. TypeScript의 경우 버그, 코드 스멜, 보안 취약점, 코드 중복을 감지합니다. SonarLint는 SonarQube 규칙을 IDE 내에서 확인할 수 있도록 해주는 확장 프로그램입니다.

TypeScript 팀의 경우 SonarCloud(클라우드 호스팅 버전)가 더 간편한 방법입니다. 공개 저장소는 무료로 사용할 수 있으며, GitHub Actions 또는 GitLab CI를 통해 몇 분 만에 CI 통합이 가능합니다.

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

SonarQube가 단순한 린팅 기능보다 뛰어난 주된 이유는 코드 품질이 시간이 지남에 따라 어떻게 변화하는지, 어떤 구성 요소가 저하되고 있는지, 그리고 각 풀 리퀘스트에 대한 새로운 코드 품질 게이트 점수는 얼마인지 등을 보여주는 추세 모델에 있습니다. 이러한 관리자용 지표를 제공하는 것이 SonarQube의 강점이며, ESLint나 Semgrep은 이러한 기능을 제공하지 못합니다.

4단계: 아키텍처 분석

Dependency-Cruiser: 모듈 경계 규칙 적용

Dependency-Cruiser는 임포트 그래프가 정의된 아키텍처 규칙을 따르는지 검증합니다. 시각적인 종속성 그래프를 생성하고, 코드가 모듈 경계 제약 조건을 위반할 경우 CI를 실패 처리합니다.

자바 스크립트

// .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))" },
    },
  ],
};

세게 때리다

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

Dependency-Cruiser는 검색 콘솔 데이터에서 "react dependency analysis cli tool" 쿼리에 직접적으로 대응하며, TypeScript/React 프로젝트에서 의존성 그래프를 생성하고 유효성을 검사하는 표준 도구입니다.

Deptrac: 레이어 기반 경계 강제 적용

Deptrac은 아키텍처 계층을 강제하여 영구 저장 코드가 프레젠테이션에서 가져올 수 없도록 하고, 도메인 객체가 인프라에 의존하지 않도록 하며, 전체 코드베이스에서 모듈 경계가 준수되도록 합니다.

# 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은 레이어 분리가 단순한 선호가 아닌 설계 제약 조건인 클린 아키텍처, DDD 또는 헥사고널 아키텍처 패턴을 따르는 프로젝트에서 가장 큰 가치를 발휘합니다.

Nx: 모노레포 수준의 종속성 관리

TypeScript 모노레포의 경우, Nx는 저장소의 모든 프로젝트에 걸쳐 모듈 경계 강제, 영향을 받는 빌드 감지 및 종속성 그래프 시각화를 제공합니다.

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의 affected 이 명령어는 변경된 모듈과 관련된 테스트 및 린팅만 실행하여 대규모 모노레포에서 CI 시간을 크게 단축합니다.

5계층: 데드 코드 감지

Knip: 사용되지 않는 내보내기, 파일 및 종속성 찾기

Knip은 전체 모듈 그래프를 분석하여 사용되지 않는 내보내기, 사용되지 않는 파일 및 사용되지 않는 항목을 식별합니다. package.json 의존성, ESLint가 정의하는 코드 누적 유형 no-unused-vars 파일 내부만 확인하기 때문에 포착할 수 없습니다.

세게 때리다

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은 SC 데이터에서 "dead code detection unused exports javascript typescript"로 직접 검색됩니다. 이는 TypeScript 프로젝트에서 모듈 수준의 사용되지 않는 코드(dead code)를 식별하는 데 있어 현재 가장 뛰어난 도구입니다.

레이어 6: 프로그램 분석, ts-morph

ts-morph는 TypeScript 컴파일러 API 래퍼로, TypeScript AST에 대한 사용자 지정 분석, 코드 수정 및 도구를 쉽게 작성할 수 있도록 해줍니다. SC 데이터에서 "ts-morph" 또는 "ts morph"로 직접 검색할 수 있습니다.

타이프 스크립트

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는 바로 실행 가능한 분석 도구가 아니라, 그러한 도구를 구축하는 데 사용하는 라이브러리입니다. 기존 도구에서 지원하는 범위를 넘어서는 맞춤형 분석이 필요한 팀, 예를 들어 마이그레이션 스크립트, 맞춤형 아키텍처 유효성 검사기, 자동 리팩토링 또는 코드 생성 파이프라인 구축에 적합합니다.

TypeScript 비동기/Await 정적 분석

검색 콘솔 데이터는 "typescript 정적 분석 async await 논문 도구" 및 "typescript 정적 분석 async await 취약점 논문 도구"와 관련된 특정 검색어 클러스터를 보여줍니다. 이는 실무자들이 타입 수준에서 비동기 프로그래밍 오류를 이해하는 도구를 찾고 있음을 반영합니다.

실제 TypeScript 개발팀에게 실질적인 해결책은 typescript-eslint의 비동기 관련 규칙 네 가지입니다.no-floating-promises, await-thenable, no-misused-promises, require-await)와 결합 strictNullChecks useUnknownInCatchVariables이들을 함께 사용하면 학술 연구 도구 없이도 가장 흔한 비동기 유형 오류를 잡아낼 수 있습니다.

비동기 취약점 패턴에 대한 보안 연구를 수행하는 팀에게 TAJS와 Jelly는 자바스크립트의 비동기 실행 의미론을 모델링하는 학술적인 정적 분석 도구이지만, 이는 연구 도구일 뿐 실제 개발 도구는 아닙니다.

Angular 및 React: 프레임워크별 정적 분석

Angular 개발팀을 위한 정보입니다., @angular-eslint Angular에 특화된 컴포넌트 패턴, 템플릿 분석 및 서비스 주입 관련 린팅 규칙을 제공합니다. 위의 ESLint + typescript-eslint 설정과 통합됩니다.

React 팀을 위해 밸리 eslint-plugin-react, eslint-plugin-react-hooks예산 및 eslint-plugin-jsx-a11y 플러그인은 React 관련 패턴을 다룹니다. Dependency-Cruiser는 React 관련 의존성 그래프 분석을 처리하며, SC 데이터에서 "react dependency analysis cli tool" 쿼리를 실행하는 데 사용되는 도구입니다.

IDE 통합: VS Code 및 JetBrains용 도구

"VS Code 통합을 위한 최고의 코드 품질 도구" 및 "IDE 통합을 위한 최고의 코드 품질 도구"라는 검색어는 실제적인 필요성을 반영합니다. CI 피드백은 동작을 변경하기에는 너무 늦게 도착합니다. IDE 통합 분석은 가장 빠른 피드백 루프를 제공합니다.

VS Code : rust-analyzer Clippy와 동등한 기능을 제공하는 ESLint 확장 프로그램, SonarQube 규칙을 인라인으로 표시하는 SonarLint 확장 프로그램, 보안 취약점을 알려주는 Snyk 확장 프로그램, 그리고 타입 수준 피드백을 제공하는 내장 TypeScript 언어 서비스가 포함되어 있습니다.

JetBrains(WebStorm/IntelliJ) : WebStorm은 타입 오류를 코드 내에서 바로 표시해주는 TypeScript 지원 기능과 ESLint, Prettier, SonarLint와의 통합 기능을 제공합니다. 내장된 검사 시스템은 ESLint 규칙에서 다루는 많은 패턴을 동일하게 검사합니다.

VS Code에서 TypeScript 정적 분석 범위를 최대화하기 위한 설정 :

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"
  }
}

방법 SMART TS XL TypeScript 분석 기능을 기업 전체로 확장합니다.

위의 도구들은 TypeScript 프로젝트 내의 TypeScript 코드만을 다룹니다. TypeScript 서비스가 COBOL 배치 프로그램, Java API, Python 데이터 파이프라인 또는 기존 메인프레임 시스템과 상호 작용하는 조직에서는 단일 언어 도구로는 언어 경계를 넘나드는 종속성을 파악할 수 없습니다.

SMART TS XL의 정적 코드 분석 TypeScript는 COBOL, JCL, Java, Python, RPG, SQL 등 기업 환경에서 사용되는 모든 언어와 함께 다뤄지며, 이러한 언어들 전반에 걸쳐 통합된 종속성 모델을 구축합니다. TypeScript 서비스가 COBOL 프로그램으로 지원되는 API를 호출할 때, SMART TS XL 그 관계를 추적하여 포함시킬 수 있습니다. 영향 분석 어떤 구성 요소라도 변경하기 전에.

엔터프라이즈 검색 기능을 통해 전체 다국어 코드베이스를 쿼리할 수 있습니다. 특정 모듈의 모든 TypeScript 가져오기, TypeScript 서비스가 호출하는 모든 Java 메서드, TypeScript에서 사용하는 API에 데이터를 제공하는 모든 COBOL 카피북 등을 수백만 줄의 코드에서 어떤 언어 조합으로든 몇 초 만에 찾을 수 있습니다.

더 큰 포트폴리오 내에서 TypeScript를 하나의 언어로 사용하는 엔터프라이즈 팀의 경우, SMART TS XL 건축적 가시성과 다국어 기능을 제공합니다. 종속성 매핑 이를 통해 TypeScript 전용 도구는 시스템의 해당 부분을 살펴보게 됩니다. SMART TS XL 전체를 본다.

적합한 스택 구축

TypeScript의 모든 품질 기준을 충족하는 단일 도구는 없습니다. 올바른 접근 방식은 계층화이며, 각 계층은 서로 다른 유형의 문제를 목표로 합니다.

최소 필수 기술 스택 (새 프로젝트, 소규모 팀):

  • 타입스크립트 엄격 모드
  • typescript-eslint 비동기 규칙이 포함된 ESLint
  • npm audit 의존성 취약점의 경우

운영 애플리케이션 스택 (중규모 팀, 보안 중요도 고려):

  • 위의 모든 것 외에도
  • Biome 또는 Prettier를 사용하여 형식을 지정하세요.
  • 보안 SAST용 Semgrep
  • 죽은 코드용 Knip
  • SonarCloud를 활용한 품질 추세 파악

엔터프라이즈/모노레포 스택 (대규모 팀, 아키텍처 제약 조건):

  • 위의 모든 것 외에도
  • 모듈 경계 강제를 위한 Dependency-Cruiser
  • 모노레포 영향 빌드 최적화를 위한 Nx
  • 레이어 경계 검증을 위한 Deptrac
  • 온프레미스 품질 게이트용 SonarQube(자체 호스팅)

다국어 엔터프라이즈 스택 (TypeScript와 기존 시스템 병입):

  • 위의 모든 것 외에도
  • SMART TS XL 언어 간 영향 분석 및 의존성 매핑을 위해