LogoSkills

quality

Run DCM code quality analysis โ€” linting, unused code, metrics, auto-fix

ํ•ญ๋ชฉ๋‚ด์šฉ
Invoke/dcm:quality
Aliases/dcm, /dcm:analyze, /dcm:fix
Categorycode-quality
Complexitymoderate

/dcm:quality โ€” ์ฝ”๋“œ ๊ฑด๊ฐ•๊ฒ€์ง„ยท์ž๋™์ˆ˜๋ฆฌ#

ํ•œ๋งˆ๋””๋กœ#

์ฝ”๋“œ๋ฅผ ๊ฑด๊ฐ•๊ฒ€์ง„ํ•˜๊ณ  ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋Š” ์ž๋™์œผ๋กœ ๊ณ ์ณ์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ž๋™์ฐจ ์ •๋น„์†Œ์ฒ˜๋Ÿผ, ์–ด๋””๊ฐ€ ๋ฌธ์ œ์ธ์ง€ ์ ๊ฒ€ํ•˜๊ณ (๋ถ„์„) ์†๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฑด ๊ทธ ์ž๋ฆฌ์—์„œ ์ˆ˜๋ฆฌ(์ž๋™์ˆ˜์ •)ํ•ด ์ค๋‹ˆ๋‹ค.

๋ˆ„๊ฐ€ยท์–ธ์ œ ์“ฐ๋‚˜์š”#

  • ์ฝ”๋“œ ํ’ˆ์งˆ์„ ํ•œ๋ฒˆ ์ ๊ฒ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ
  • ์•ˆ ์“ฐ๋Š” ์ฝ”๋“œ๋‚˜ ํŒŒ์ผ์ด ์Œ“์—ฌ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ •๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ
  • ์ฝ”๋“œ ๊ทœ์น™(๋ฆฐํŠธ) ์œ„๋ฐ˜์ด๋‚˜ ๋ณต์žก๋„ ๊ฐ™์€ ์ง€ํ‘œ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์‹ถ์„ ๋•Œ
  • ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ

๋ฌด์—‡์„ ํ•ด์ฃผ๋‚˜์š”#

  • ์ฝ”๋“œ ์ „์ฒด๋ฅผ ์ ๊ฒ€ํ•ด ๋ฌธ์ œ๋ฅผ ํŒŒ์ผ๋ณ„ยท์‹ฌ๊ฐ๋„๋ณ„๋กœ ์ •๋ฆฌํ•œ ๋ฆฌํฌํŠธ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ์ž๋™์œผ๋กœ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š” ๊ทธ ์ž๋ฆฌ์—์„œ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์•ˆ ์“ฐ๋Š” ์ฝ”๋“œยท์•ˆ ์“ฐ๋Š” ํŒŒ์ผยท์ค‘๋ณต ์ฝ”๋“œยท๋ณต์žก๋„ ์ง€ํ‘œ๋ฅผ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค.
  • ํ•œ ๋ฒˆ์— ๊ธฐ์ค€์„ ์„ ์žก๋Š” ์ž‘์—…(baseline)์„ ํ•˜๋ฉด dcm_baseline.json ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค โ€” ์ง€๊ธˆ๊นŒ์ง€์˜ ๋ฌธ์ œ๋Š” "์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ"์œผ๋กœ ๋ฌถ์–ด๋‘๊ณ , ์•ž์œผ๋กœ ์ƒˆ๋กœ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๋งŒ ๊ณจ๋ผ์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ์“ฐ๋‚˜์š”#

# ๊ธฐ๋ณธ ์ ๊ฒ€ (๋Œ€์ƒ ์ƒ๋žต ์‹œ lib ํด๋”)
/dcm:quality

# ํŠน์ • ํด๋”๋งŒ ์ ๊ฒ€
/dcm:quality lib/src/feature

# ์ „์ฒด ์ ๊ฒ€ ํ›„ ์ž๋™์ˆ˜์ •๊นŒ์ง€ ํ•œ ๋ฒˆ์—
/dcm:quality --mode=full

# ๋น ๋ฅธ ๋‹จ์ผ ์ ๊ฒ€ โ€” ๋ฆฐํŠธ / ์•ˆ ์“ฐ๋Š” ์ฝ”๋“œ / ์ง€ํ‘œ
/dcm:quality --mode=analyze
/dcm:quality --mode=unused
/dcm:quality --mode=metrics

# ์ž๋™์ˆ˜์ • (์œ„ํ—˜ํ•œ ์ˆ˜์ •๊นŒ์ง€ ํฌํ•จํ•˜๋ ค๋ฉด --unsafe)
/dcm:quality --mode=fix
/dcm:quality --mode=fix --unsafe

# ๊ธฐ์ค€์„ (baseline) ์žก๊ธฐ
/dcm:quality --baseline
  • --mode๋Š” ์ ๊ฒ€ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค: full(์ „์ฒด), analyze(๋ฆฐํŠธ๋งŒ), fix(์ž๋™์ˆ˜์ •), unused(์•ˆ ์“ฐ๋Š” ์ฝ”๋“œ), metrics(์ง€ํ‘œ), duplication(์ค‘๋ณต).
  • --reporter๋กœ ๊ฒฐ๊ณผ ํ˜•์‹์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: console(๊ธฐ๋ณธ, ํ™”๋ฉด ์ถœ๋ ฅ), json(ํŒŒ์ผยท๋„๊ตฌ ์—ฐ๋™์šฉ).
  • --unsafe๋Š” ์ž๋™์ˆ˜์ • ์‹œ ๋‹ค์†Œ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ •๊นŒ์ง€ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์•ˆ์—์„œ ๋ฌด์Šจ ์ผ์ด ๋ฒŒ์–ด์ง€๋‚˜์š”#

์„ ํƒํ•œ ๋ฐฉ์‹์— ๋”ฐ๋ผ ์ ๊ฒ€๊ณผ ์ˆ˜์ •์„ ์ฐจ๋ก€๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ „์ฒด ์ ๊ฒ€(full) โ€” ๋ชจ๋“  ๊ฒ€์‚ฌ๋ฅผ ํ•œ ๋ฒˆ์— ๋Œ๋ฆฌ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผยท์‹ฌ๊ฐ๋„๋ณ„๋กœ ๋ฌถ์–ด ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ ์ž๋™์ˆ˜์ •์„ ํ•˜๊ณ , ๋‹ค์‹œ ์ ๊ฒ€ํ•ด์„œ "์ž๋™์œผ๋กœ ํ•ด๊ฒฐ๋œ ๊ฒƒ"๊ณผ "์‚ฌ๋žŒ์ด ์ง์ ‘ ์†๋ด์•ผ ํ•˜๋Š” ๊ฒƒ"์„ ๊ตฌ๋ถ„ํ•ด ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
  2. ๋น ๋ฅธ ์ ๊ฒ€(analyze/unused/metrics) โ€” ํ•„์š”ํ•œ ๊ฒ€์‚ฌ ํ•˜๋‚˜๋งŒ ๊ณจ๋ผ ๋Œ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ž๋™์ˆ˜์ •(fix) โ€” ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ , ์•ˆ ์“ฐ๋Š” ์ฝ”๋“œ๋„ ์ •๋ฆฌํ•œ ๋’ค, ๋‹ค์‹œ ์ ๊ฒ€ํ•ด์„œ ์ œ๋Œ€๋กœ ๊ณ ์ณ์กŒ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ธฐ์ค€์„  ์žก๊ธฐ(baseline) โ€” ๋จผ์ € ์ง„ํ–‰ ๊ณ„ํš์„ ๋ณด์—ฌ์ฃผ๊ณ , ํ™•์ธ์„ ๋ฐ›์€ ๋’ค ๋‹จ๊ณ„๋ณ„๋กœ ์‹คํ–‰ํ•ด dcm_baseline.json์„ ๋งŒ๋“ค๊ณ  ์ปค๋ฐ‹๊นŒ์ง€ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

โš™๏ธ ์ƒ์„ธ ์˜ต์…˜ยท์‹คํ–‰ ๋ช…์„ธ (๊ฐœ๋ฐœ์ž / AI ์—์ด์ „ํŠธ์šฉ)

Triggers#

  • When code quality analysis is requested
  • When DCM lint checks are requested
  • When unused code/file detection is requested
  • When code metrics review is requested
  • When auto-fix is requested

Context Trigger Pattern#

/dcm:quality {target} [--options]

Parameters#

ParameterRequiredDescriptionExample
targetNoAnalysis target (default: lib)lib, lib/src/feature, .
--modeNoExecution modefull, analyze, fix, unused, metrics, duplication
--reporterNoOutput formatconsole (default), json
--unsafeNoInclude unsafe fixes
--baselineNoRun baseline workflow

Actions#

ActionDescriptionCommand
Full checkRun all checks at oncedcm run . --all
Lint analysisCheck for lint rule violationsdcm analyze .
Auto-fixFix auto-fixable issuesdcm fix .
Unused codeDetect unused code declarationsdcm check-unused-code .
Unused filesDetect unused Dart filesdcm check-unused-files .
Dependency checkCheck for dependency issuesdcm check-dependencies .
Code duplicationDetect duplicate codedcm check-code-duplication .
MetricsCalculate code metricsdcm calculate-metrics .
Widget analysisAnalyze Flutter widgetsdcm analyze-widgets .
Asset analysisAnalyze image assetsdcm analyze-assets .
Structure analysisAnalyze project structuredcm analyze-structure .

Workflow Patterns#

Pattern 1: Full Code Review#

/dcm:quality --mode=full
  1. Run dcm run . --all
  2. Group and report results by file and severity
  3. Auto-fix with dcm fix .
  4. Re-run dcm analyze . to check remaining issues
  5. Report fix results and items requiring manual action

Pattern 2: Quick Analysis#

/dcm:quality --mode=analyze
/dcm:quality --mode=unused
/dcm:quality --mode=metrics

Run the appropriate single command and report results

Pattern 3: Fix Workflow#

/dcm:quality --mode=fix
/dcm:quality --mode=fix --unsafe
  1. Run dcm fix .
  2. Run dcm fix . --type=unused-code
  3. Re-run checks to verify fixes

Pattern 4: Baseline Adoption#

/dcm:quality --baseline
  1. Present the baseline workflow plan to the user
  2. Execute step by step after confirmation
  3. Guide dcm_baseline.json creation and commit