9148c358d0
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를 Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류. - 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로 자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거, 동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거. - 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming, Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business, Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로, 나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는 title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백). 원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지. - 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서. - 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는 지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지. - Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경. - 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
6.8 KiB
6.8 KiB
id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
| id | title | category | status | canonical_id | aliases | duplicate_of | source_trust_level | confidence_score | verification_status | tags | raw_sources | last_reinforced | github_commit | tech_stack | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| wiki-2026-0508-코드-품질-관리-및-자동화-code-quality-mana | 코드 품질 관리 및 자동화 (Code Quality Management and Automation) | 10_Wiki/Topics | verified | self |
|
none | A | 0.9 | applied |
|
2026-05-10 | pending |
|
코드 품질 관리 및 자동화 (Code Quality Management and Automation)
매 한 줄
"매 quality 의 의 의 의 manual review 의 의 의 X, 매 pipeline 의 의 의 의 의 enforce". 매 lint / format / type / test / coverage / security / performance 의 의 의 의 한 의 의 의 PR pipeline 의 의 의 의 의 의 quality gate. 매 2026 — 매 SonarQube + Semgrep + Claude review 의 의 의 의 standard.
매 핵심
매 Quality dimensions (ISO 25010)
- Functional suitability — 매 correctness, 매 completeness.
- Reliability — 매 fault tolerance, 매 availability.
- Performance — 매 response time, 매 throughput.
- Usability — 매 UX, 매 accessibility.
- Security — 매 confidentiality, 매 integrity.
- Maintainability — 매 modularity, 매 testability.
- Portability — 매 adaptability, 매 installability.
매 Automation pyramid
- Pre-commit — 매 fast (sec) — format, lint, secret scan.
- PR — 매 medium (min) — type, unit test, SAST, LLM review.
- Main / nightly — 매 slow (hour) — integration, E2E, perf, DAST.
- Production — 매 continuous — RUM, error tracking, drift.
매 Key metrics
- Cyclomatic complexity — 매 path count.
- Cognitive complexity (SonarSource) — 매 readability.
- Test coverage — 매 line / branch / mutation.
- Tech debt ratio — 매 SQALE method.
- Code smells — 매 ESLint, SonarQube rule.
- Duplicated lines — 매 PMD CPD.
매 2026 standard stack
- Format: Prettier, Biome, Black, Ruff format, gofmt.
- Lint: ESLint, Biome, Ruff, golangci-lint, Clippy.
- Type: TypeScript, Pyright, mypy.
- Test: Vitest, Jest, pytest, go test.
- Coverage: c8, Istanbul, coverage.py.
- SAST: Semgrep, CodeQL, Snyk.
- Quality: SonarQube / SonarCloud.
- AI: Claude Code Action, CodeRabbit, Greptile.
💻 패턴
매 Pre-commit (full)
# .pre-commit-config.yaml
default_install_hook_types: [pre-commit, commit-msg]
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-merge-conflict
- repo: https://github.com/biomejs/pre-commit
rev: v0.6.0
hooks: [{id: biome-check}]
- repo: https://github.com/gitleaks/gitleaks
rev: v8.20.0
hooks: [{id: gitleaks}]
- repo: https://github.com/commitizen-tools/commitizen
rev: v4.0.0
hooks: [{id: commitizen, stages: [commit-msg]}]
매 GitHub Actions — quality gate
name: Quality
on: [pull_request]
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- uses: actions/setup-node@v4
with: { node-version: 22, cache: pnpm }
- run: pnpm install --frozen-lockfile
- run: pnpm exec biome ci .
- run: pnpm exec tsc --noEmit
- run: pnpm test --coverage
- uses: codecov/codecov-action@v5
- uses: returntocorp/semgrep-action@v1
- uses: SonarSource/sonarcloud-github-action@v3
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- uses: anthropics/claude-code-action@v1
with:
model: claude-opus-4-7
매 SonarQube quality gate
# sonar-project.properties
sonar.projectKey=myorg_myrepo
sonar.organization=myorg
sonar.sources=src
sonar.tests=tests
sonar.javascript.lcov.reportPaths=coverage/lcov.info
sonar.qualitygate.wait=true
# 매 PR 의 의 의 의 의 fail 의 의 의 의:
# - new code coverage < 80%
# - new bugs > 0
# - new vulnerabilities > 0
# - new code smells > 5
매 Mutation testing (StrykerJS)
{
"packageManager": "pnpm",
"testRunner": "vitest",
"coverageAnalysis": "perTest",
"thresholds": { "high": 80, "low": 60, "break": 50 }
}
매 Performance budget (Lighthouse CI)
{
"ci": {
"collect": { "url": ["https://staging.example.com"] },
"assert": {
"assertions": {
"categories:performance": ["error", { "minScore": 0.9 }],
"interactive": ["error", { "maxNumericValue": 3000 }]
}
}
}
}
매 Dependency audit
pnpm audit --prod --audit-level=high
trivy fs --severity HIGH,CRITICAL .
osv-scanner -r .
매 Visual regression (Playwright)
test("homepage matches snapshot", async ({ page }) => {
await page.goto("/");
await expect(page).toHaveScreenshot("homepage.png", {
maxDiffPixelRatio: 0.01,
});
});
매 결정 기준
| 상황 | Approach |
|---|---|
| 매 small team / OSS | 매 Biome + Vitest + Codecov + CodeRabbit |
| 매 enterprise | 매 SonarQube + Semgrep + Snyk + Claude |
| 매 perf-critical | 매 + Lighthouse CI + k6 |
| 매 UI-heavy | 매 + Playwright visual + Chromatic |
| 매 supply chain risk | 매 + SLSA + Sigstore + SBOM |
기본값: 매 pre-commit (Biome + gitleaks) + PR (test + coverage + SAST + Claude) + main (E2E + perf).
🔗 Graph
- 부모: DevOps
- 변형: 자동화된 코드 리뷰 · Test Automation
- 응용: SonarQube · Semgrep · GitHub Actions
- Adjacent: Mutation Testing · Supply Chain Security
🤖 LLM 활용
언제: 매 quality gate 의 의 의 의 design, 매 metric threshold 의 의 의 의 의 calibrate, 매 flaky test 의 의 의 의 의 root-cause. 언제 X: 매 fundamental architectural quality — 매 structural review 의 의 의 의 human + design doc 의 의 필요.
❌ 안티패턴
- Coverage worship: 매 100% coverage 의 의 의 의 의 의 quality 의 의 의 의 X.
- Quality theater: 매 lint 의 의 의 의 의 통과 의 의 의 의, 매 hidden disable 의 의 의 의 thousands.
- Bypass habitually: 매
--no-verify의 의 의 의 의 routine. - Metric manipulation: 매 cyclomatic 의 의 의 의 의 의 의 의 game (extract method 의 의 의 의 thoughtless).
- Slow gate: 매 PR pipeline 의 의 의 의 30min — 매 dev 의 의 의 의 disengage.
🧪 검증 / 중복
- Verified — SonarQube docs (2026); ISO/IEC 25010:2023; Continuous Delivery (Humble & Farley); GitHub Actions docs.
- 신뢰도 A.
🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — automation pyramid + ISO 25010 + 2026 stack |