# ๐Ÿ” CodePulse CLI CodePulse Logo ### ๐Ÿš€ ๊ณ ๊ธ‰ ์•„ํ‚คํ…์ฒ˜ ์ธํ…”๋ฆฌ์ „์Šค ๋ฐ ์ฝ”๋“œ ์ƒํƒœ ์—”์ง„ **์•„ํ‚คํ…์ฒ˜ ์ธํ…”๋ฆฌ์ „์Šค โ€ข ์‹œ๋งจํ‹ฑ ๋ชจ๋ธ๋ง โ€ข ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง โ€ข AI ์—์ด์ „ํŠธ ์ค€๋น„ ์™„๋ฃŒ** CodePulse๋Š” ๋Œ€๊ทœ๋ชจ JavaScript, TypeScript, Python ๋ฐ ํ˜ผํ•ฉ ์–ธ์–ด ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ ์ฐจ์„ธ๋Œ€ ์•„ํ‚คํ…์ฒ˜ ์ƒํƒœ ์—”์ง„์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ ๊ตฌ์กฐ, ์ข…์†์„ฑ ์œ„ํ—˜ ๋ฐ ์ง„ํ™” ์ถ”์„ธ์— ๋Œ€ํ•œ ๊นŠ์€ ์‹œ์Šคํ…œ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•˜์—ฌ ํŒ€๊ณผ AI ์—์ด์ „ํŠธ๊ฐ€ ์™ธ๊ณผ์  ์ •๋ฐ€๋„๋กœ ๊ฒฌ๊ณ ํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. **v5.2 ์ง„ํ™”:** ์ƒˆ๋กœ์šด ๋น„์„ ํ˜• ์Šค์ฝ”์–ด๋ง ๋ชจ๋ธ, ์‹ ๋ขฐ๋„ ์ง€ํ‘œ(๐Ÿ›ก๏ธ๏ธ Confidence Metric) ๋ฐ **์•„ํ‚คํ…์ฒ˜ ๊ณ ์ŠคํŠธ ๋ชจ๋“œ(Ghost Mode)**๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ![CodePulse Health](../badge.svg) [![NPM Version](https://img.shields.io/npm/v/@archpulse/codepulse?style=for-the-badge&color=0ea5e9)](https://www.npmjs.com/package/@archpulse/codepulse) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT) [![Node Version](https://img.shields.io/badge/Node-16%2B-brightgreen?style=for-the-badge)](https://nodejs.org/) --- ### ๐ŸŒ ๋‹ค๊ตญ์–ด ์ง€์› [English](../README.md) | [ะฃะบั€ะฐั—ะฝััŒะบะฐ](./README.ua.md) | [ะ ัƒััะบะธะน](./README.ru.md) | [ฤŒeลกtina](./README.cs.md) | [ํ•œ๊ตญ์–ด](./README.ko.md) | [Deutsch](./README.de.md) | [Franรงais](./README.fr.md) ### ๐Ÿ“– ์ „์ฒด ๋ฌธ์„œ [English](../docs/CODEPULSE_FULL_DOCS.md) | [ะฃะบั€ะฐั—ะฝััŒะบะฐ](./CODEPULSE_FULL_DOCS.ua.md) | [ะ ัƒััะบะธะน](./CODEPULSE_FULL_DOCS.ru.md) | [ฤŒeลกtina](./CODEPULSE_FULL_DOCS.cs.md) | [ํ•œ๊ตญ์–ด](./CODEPULSE_FULL_DOCS.ko.md) | [Deutsch](./CODEPULSE_FULL_DOCS.de.md) | [Franรงais](./CODEPULSE_FULL_DOCS.fr.md)
--- ## โšก ๋น ๋ฅธ ์‹œ์ž‘ ### ์„ค์น˜ ```bash npm install -g @archpulse/codepulse ``` ### ์ฒซ ์Šค์บ” ```bash # ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถ„์„ํ•˜๊ณ  HTML ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค codepulse scan . # ์‹ค์‹œ๊ฐ„ TUI ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค codepulse watch . ``` --- ## ๐Ÿš€ ์„ฑ๋Šฅ ๋ฐ ๋ถ„์„ ์—”์ง„ CodePulse๋Š” ๋‹ค์–‘ํ•œ ์›Œํฌํ”Œ๋กœ์šฐ์— ์ตœ์ ํ™”๋œ ๋‘ ๊ฐ€์ง€ ๋ถ„์„ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€ ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ฆฐํŒ…์„ ํ›จ์”ฌ ๋›ฐ์–ด๋„˜์–ด ์ „์ฒด ํ”„๋กœ์ ํŠธ์˜ ํฌ๊ด„์ ์ธ ์‹œ์Šคํ…œ ๋ชจ๋ธ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ### ๋น ๋ฅธ ๋ชจ๋“œ (Ultra-fast scanning) *์ค‘์ : ํ•ต์‹ฌ ์•„ํ‚คํ…์ฒ˜ ์ƒํƒœ ๋ฐ ๊ธฐ๋ณธ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ.* | ๋„๊ตฌ | ์—”์ง„ | ์‹คํ–‰ ์‹œ๊ฐ„ (s) | |------|------|-------------| | **ESLint** | ๊ธฐ์ค€์„  | ~4.8s | | **CodePulse** | **Oxlint Engine** | **~2.8s** | ### ํ™•์žฅ ๋ถ„์„ ๋ชจ๋“œ (์ „์ฒด ์—์ฝ”์‹œ์Šคํ…œ ํ˜ธํ™˜์„ฑ) *์ค‘์ : ๊นŠ์€ ์•„ํ‚คํ…์ฒ˜ ํ†ต์ฐฐ๋ ฅ, ๋ณต์žกํ•œ ์ข…์†์„ฑ ๋ถ„์„ ๋ฐ ์ „์ฒด ESLint ๊ทœ์น™ ํ˜ธํ™˜์„ฑ.* | ๋„๊ตฌ | ์—”์ง„ | ์‹คํ–‰ ์‹œ๊ฐ„ (s) | |------|------|-------------| | **ESLint** | ์›์‹œ ๊ธฐ์ค€์„  | ~3.3s | | **CodePulse** | **ESLint + Systemic Analysis** | **~5.5s** | > **์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?** > **ํ™•์žฅ ๋ถ„์„ ๋ชจ๋“œ**์—์„œ CodePulse๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ „์ฒด ESLint ์ œํ’ˆ๊ตฐ์„ ์‹คํ–‰ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž์ฒด ์‹œ์Šคํ…œ ๋ถ„์„(์ข…์†์„ฑ ๊ทธ๋ž˜ํ”„, ์ˆœํ™˜ ๊ฐ์ง€, ์•„ํ‚คํ…์ฒ˜ ๊ฒฝ๊ณ„ ํ™•์ธ ๋ฐ ๊ธฐ๋ก์  ์ด์ง๋ฅ )์„ ์ถ”๊ฐ€๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์—์ฝ”์‹œ์Šคํ…œ ํ‘œ์ค€ ๋ฆฐํŒ…๊ณผ ๊นŠ์€ ๊ตฌ์กฐ์  ์ธํ…”๋ฆฌ์ „์Šค๊ฐ€ ๊ฒฐํ•ฉ๋œ ํ†ตํ•ฉ ๋ณด๊ณ ์„œ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. --- ## ๐Ÿ” ์Šค์บ” ๋ชจ๋“œ ๋ฐ ์—”์ง„ ### ์—”์ง„ ์„ ํƒ ```bash # ์ž๋™ ๊ฐ์ง€ (๊ธฐ๋ณธ๊ฐ’) # ์„ค์ •์ด ๋ฐœ๊ฒฌ๋˜๋ฉด ESLint๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Oxlint๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค codepulse scan . # ์ดˆ๊ณ ์† ๋ชจ๋“œ ๊ฐ•์ œ ์‹คํ–‰ (Oxlint ๊ธฐ๋ฐ˜) codepulse scan . --engine oxlint # ํ™•์žฅ ๋ถ„์„ ๋ชจ๋“œ ๊ฐ•์ œ ์‹คํ–‰ (๋†’์€ ์ •๋ฐ€๋„ ๋ฐ ํ˜ธํ™˜์„ฑ) codepulse scan . --engine eslint # ๋˜๋Š” codepulse scan . --precision ``` ### ์ƒ์„ธ / ๋””๋ฒ„๊ทธ ๋ชจ๋“œ ```bash # ํ”„๋กœ๊ทธ๋žจ ์ˆ˜์ค€ ๋ฌธ์ œ๋งŒ ํ‘œ์‹œ codepulse scan . -d # ๋ฆฐํ„ฐ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ (๊ธฐ๋ณธ ๋„๊ตฌ์˜ ์›์‹œ ์ถœ๋ ฅ ํ‘œ์‹œ) codepulse scan . -ld ``` --- ## ๐Ÿ† ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๋ฐ ๊ฒฝ์Ÿ ์šฐ์œ„ CodePulse๋Š” AST ์ •์  ๋ถ„์„, Git ๊ธฐ๋ฐ˜ ์ด์ง๋ฅ  ๋ฐ ๊ฒฐํ•ฉ ๋ถ„์„, AI ์—์ด์ „ํŠธ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์œ„ํ•œ ๋„ค์ดํ‹ฐ๋ธŒ MCP ํ†ตํ•ฉ์„ ์™„๋ฒฝํ•˜๊ฒŒ ํ†ตํ•ฉํ•˜๋Š” ์œ ์ผํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ํ˜„๋Œ€์ ์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋˜์–ด '๊ณผ๊ฑฐ์˜ ์ƒํƒœ, ํ˜„์žฌ์˜ ์ƒํƒœ, ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ์— ํ•  ์ผ'์— ๋Œ€ํ•œ ๋‹ต์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. | ๊ธฐ๋Šฅ | ์„ค๋ช… | |---------|-------------| | **๐Ÿ›๏ธ๏ธ ์•„ํ‚คํ…์ฒ˜ ๋ ˆ์ด๋”** | ๋ ˆ์ด์–ด๋ฅผ ์ •์˜ํ•˜๊ณ  ๊ฒฝ๊ณ„ ์œ„๋ฐ˜์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ | | **๐Ÿ’ก ์‹œ๋งจํ‹ฑ ์ค‘๋ณต ๊ฐ์ง€** | AST ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ์  ํ•ด์‹ฑ์œผ๋กœ ๋‹จ์ˆœํ•œ ์ค„์ด ์•„๋‹Œ ๋™์ผํ•œ ๋กœ์ง์„ ํƒ์ƒ‰ | | **๐Ÿ”„ ์ˆœํ™˜ ์ข…์†์„ฑ ์ œ๊ฑฐ** | ์ˆœํ™˜ ์ž„ํฌํŠธ ๋ฐ ์ข…์†์„ฑ ๋ฃจํ”„ ๊ฐ์ง€ ๋ฐ ์‹œ๊ฐํ™” | | **โšก ์‹ค์‹œ๊ฐ„ Watch ๋ชจ๋“œ** | ์ฝ”๋”ฉ ์ค‘์— ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋Œ€ํ™”ํ˜• TUI ๋Œ€์‹œ๋ณด๋“œ | | **๐Ÿš€ ๋ณ‘๋ ฌ ํŒŒ์ดํ”„๋ผ์ธ** | ํ•ต์‹ฌ ๋ถ„์„, ๋น ๋ฅธ ๋ฆฐํ„ฐ ๋ฐ ๋ณด์•ˆ ๊ฒ€์‚ฌ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋จ | | **๐Ÿ“ฆ ์Šค๋งˆํŠธ ์บ์‹ฑ** | ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ํŒŒ์ผ์˜ ๊ฒฐ๊ณผ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์žฌ์‚ฌ์šฉ | | **๐Ÿ› ๏ธ๏ธ ์ž๋™ ๋ฆฐํ„ฐ ์„ค์ •** | ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ์™ธ๋ถ€ ๋ฆฐํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์„ค์น˜ | | **๐ŸŽจ ์ „๋ฌธ์ ์ธ TUI/CLI** | ํ’๋ถ€ํ•œ ์ƒ‰์ƒ, ๋Œ€ํ™”ํ˜• ์‹œ๊ฐํ™” ๋ฐ ๋ช…ํ™•ํ•œ ํ”ผ๋“œ๋ฐฑ | | **๐ŸŒ 7๊ฐœ ๊ตญ์–ด ์ง€์›** | ๊ธ€๋กœ๋ฒŒ ๊ฐœ๋ฐœ ํŒ€์„ ์œ„ํ•œ ์ „์ฒด ํ˜„์ง€ํ™” | | **๐Ÿ“„ ๋ผ์ด์„ ์Šค ๊ด€๋ฆฌ** | ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด์„ ์Šค๋ฅผ ์ฆ‰์‹œ ์ƒ์„ฑ ๋ฐ ๊ฒ€์ฆ | --- ## ๐Ÿ“‹ ๋ช…๋ น ์ฐธ์กฐ ### ๊ธฐ๋ณธ ๋ช…๋ น | ๋ช…๋ น | ์„ค๋ช… | |---------|-------------| | `codepulse scan [dir]` | ์ „์ฒด ๋ถ„์„ + HTML ๋ณด๊ณ ์„œ + ์ƒํƒœ ๋ฐฐ์ง€ | | `codepulse watch [dir]` | ๋Œ€ํ™”ํ˜• ์‹ค์‹œ๊ฐ„ TUI ๋Œ€์‹œ๋ณด๋“œ | | `codepulse verify [dir]` | **[GOD TIER]** ์‹ฌ์ธต ๊ฒ€์ฆ: ๋นŒ๋“œ, ํƒ€์ž… ์ฒดํฌ ๋ฐ ํ…Œ์ŠคํŠธ | | `codepulse audit [dir]` | **[NEW]** ํฌ๊ด„์ ์ธ ์•„ํ‚คํ…์ฒ˜ ๊ฐ์‚ฌ ๋ฐ `AUDIT.md` ์ƒ์„ฑ | | `codepulse ghost ` | **[NEW]** ํŒŒ์ผ ๋ณ€๊ฒฝ ์‹œ ์•„ํ‚คํ…์ฒ˜ "์˜ํ–ฅ ๋ฒ”์œ„" ์˜ˆ์ธก | | `codepulse mcp` | AI ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•œ Model Context Protocol (MCP) ์„œ๋ฒ„ ์‹œ์ž‘ | | `codepulse setup-mcp` | MCP ๊ตฌ์„ฑ ๋ฐ ์—์ด์ „ํŠธ ๊ทœ์น™ ํŒŒ์ผ ์ƒ์„ฑ | | `codepulse stats [dir]` | ๋น ๋ฅธ ํ”„๋กœ์ ํŠธ ํ†ต๊ณ„ ๋ฐ ์ƒํƒœ ๊ฐœ์š” | | `codepulse explain [topic]` | ํŠน์ • ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ƒ์„ธ ์„ค๋ช… ๋ฐ ํ•ด๊ฒฐ ์กฐ์–ธ | ### ๊ณ ๊ธ‰ ๋ถ„์„ | ๋ช…๋ น | ์„ค๋ช… | |---------|-------------| | `codepulse pr-risk [dir]` | Pull Request ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์•„ํ‚คํ…์ฒ˜ ์œ„ํ—˜ ํ‰๊ฐ€ | | `codepulse coupling [dir]` | "์‹œ๊ฐ„์  ๊ฒฐํ•ฉ"(ํ•จ๊ป˜ ๋ณ€๊ฒฝ๋˜๋Š” ํŒŒ์ผ) ๊ฐ์ง€ | | `codepulse health-trend` | ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ฅธ ์ƒํƒœ ์ ์ˆ˜ ์ง„ํ™” ์‹œ๊ฐํ™” | | `codepulse heatmap [dir]` | ์ฝ”๋“œ๋ฒ ์ด์Šค ์œ„ํ—˜ ์˜์—ญ์˜ ๋Œ€ํ™”ํ˜• TUI ํŠธ๋ฆฌ๋งต | | `codepulse diff ` | ๋ธŒ๋žœ์น˜ ๊ฐ„ ์•„ํ‚คํ…์ฒ˜ ์ƒํƒœ ๋น„๊ต | | `codepulse time-machine` | ์ข…์†์„ฑ ๊ทธ๋ž˜ํ”„ ์ด๋ ฅ ๋ฐ ์ง„ํ™” ๋ถ„์„ | | `codepulse profile` | ๋Ÿฐํƒ€์ž„ ํ”„๋กœํŒŒ์ผ๋Ÿฌ ๋ฐ์ดํ„ฐ์™€ ์ฝ”๋“œ ๋ณต์žก๋„ ์ƒ๊ด€๊ด€๊ณ„ ๋ถ„์„ | | `codepulse synth [dir]` | ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ํ•ฉ์„ฑ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ๊ณ„ํš ์ƒ์„ฑ | --- ## ๐Ÿ›๏ธ๏ธ ์•„ํ‚คํ…์ฒ˜ ๊ฑฐ๋ฒ„๋„Œ์Šค `.codepulse.json`์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ์™€ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค: ```json { "architecture": { "layers": [ { "name": "UI", "pattern": "src/ui/.*", "allowDependenciesFrom": ["Services", "Utils"] }, { "name": "Services", "pattern": "src/services/.*", "allowDependenciesFrom": ["DB", "Utils"] }, { "name": "DB", "pattern": "src/db/.*", "allowDependenciesFrom": ["Utils"] } ], "strict": true } } ``` --- ## ๐Ÿ”Œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ ํŒ€์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž์ถ˜ ๋งž์ถคํ˜• ๋ถ„์„ ๊ทœ์น™์œผ๋กœ CodePulse๋ฅผ ํ™•์žฅํ•˜์‹ญ์‹œ์˜ค. ### ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒ์„ฑ ํ”„๋กœ์ ํŠธ์˜ `plugins/` ๋””๋ ‰ํ† ๋ฆฌ์— TypeScript/JavaScript ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค: ```typescript import { Rule, AnalysisContext, Issue } from '@archpulse/codepulse'; export default class CustomQualityRule implements Rule { name = 'custom-quality-rule'; description = 'ํŒ€๋ณ„ ํ‘œ์ค€์ด ์ถฉ์กฑ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค'; version = '1.0.0'; category = 'code-quality'; run(context: AnalysisContext): Issue[] { // ๋งž์ถคํ˜• ๋ถ„์„ ๋กœ์ง return []; } } ``` ๐Ÿ“˜ **[ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐœ๋ฐœ ํƒ์ƒ‰ โ†’](../docs/PLUGINS.md)** --- ## ๐Ÿค– AI ์—์ด์ „ํŠธ ํ†ตํ•ฉ (MCP) CodePulse๋Š” ๋„ค์ดํ‹ฐ๋ธŒ **Model Context Protocol (MCP)** ์„œ๋ฒ„๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ์–ด AI ์–ด์‹œ์Šคํ„ดํŠธ(Claude, Cursor ๋“ฑ)๊ฐ€ ์ „๋ฌธ๊ฐ€ ์ˆ˜์ค€์˜ ์•„ํ‚คํ…์ฒ˜ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ### AI ์–ด์‹œ์Šคํ„ดํŠธ ์„ค์ • ```bash # MCP ๊ตฌ์„ฑ ๋ฐ IDE ์ „์šฉ ๊ทœ์น™ ์ƒ์„ฑ codepulse setup-mcp ``` ์ด ๋ช…๋ น์€ ๋‹ค์–‘ํ•œ IDE ๋ฐ ์—์ด์ „ํŠธ(`.cursorrules`, `.clinerules`, `CLAUDE.md` ๋“ฑ)๋ฅผ ์œ„ํ•œ ์ตœ์ ํ™”๋œ ๊ทœ์น™์„ ์ƒ์„ฑํ•˜์—ฌ ๋” ๊นŠ์€ ์ปจํ…์ŠคํŠธ๋ฅผ ์œ„ํ•ด CodePulse ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ### ์—์ด์ „ํŠธ ์ „์šฉ ๋„๊ตฌ (17๊ฐœ ์ด์ƒ์˜ ๋„๊ตฌ) | ๋„๊ตฌ | ์„ค๋ช… | |------|-------------| | `codepulse_identity` | ํ”„๋กœ์ ํŠธ ์ƒํƒœ ์ ์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ์ค‘์š”ํ•œ "God Files" ์‹๋ณ„ | | `get_file_context` | ํŒŒ์ผ์— ๋Œ€ํ•œ ์‹ฌ์ธต ์•„ํ‚คํ…์ฒ˜ ์„œ๋ฅ˜(๊ฒฐํ•ฉ, ์œ„ํ—˜, ๋ณต์žก๋„) ์ œ๊ณต | | `predict_change_impact` | ์‹ฌ๋ณผ ๋ณ€๊ฒฝ์˜ ์ „์ด์  ์˜ํ–ฅ ๋ฒ”์œ„ ์˜ˆ์ธก | | `optimize_context` | **[NEW]** ํŠน์ • ๋ชฉํ‘œ์— ๋Œ€ํ•œ ์ตœ์†Œํ•œ์˜ ๊ด€๋ จ ํŒŒ์ผ ํ•„ํ„ฐ๋ง ๋ฐ ์‹๋ณ„ | | `find_similar_functions` | ํ”„๋กœ์ ํŠธ ์ „์ฒด์—์„œ AST ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ์  ์ค‘๋ณต ๊ฒ€์ƒ‰ | | `suggest_split_strategy` | ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ๋ถ„ํ•ด ๋ฐ ๋ฆฌํŒฉํ† ๋ง ๊ณ„ํš | | `simulate_edit` | ์•„ํ‚คํ…์ฒ˜ ๊ทœ์น™์— ๋Œ€ํ•ด ์ œ์•ˆ๋œ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๊ฒ€์ฆ | --- ## ๐Ÿ› ๏ธ๏ธ CI/CD ํ†ตํ•ฉ GitHub ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ ์•„ํ‚คํ…์ฒ˜ ๊ฒ€ํ† ๋ฅผ ์ž๋™ํ™”ํ•˜์‹ญ์‹œ์˜ค. ```yaml - name: CodePulse Review uses: archpulse/codepulse@v5 with: command: 'review' github_token: ${{ secrets.GITHUB_TOKEN }} ``` **CI ๊ธฐ๋Šฅ:** - **Review:** PR ์š”์•ฝ ๋ฐ ์˜ํ–ฅ ๋ถ„์„์„ GitHub์— ์ง์ ‘ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. - **Verify:** ๋นŒ๋“œ, ํƒ€์ž… ์ฒดํฌ ๋ฐ ํ…Œ์ŠคํŠธ ํ†ต๊ณผ์œจ์„ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. - **Audit:** ๋ชจ๋“  ๋นŒ๋“œ์— ๋Œ€ํ•ด `AUDIT.md` ๊ฒฐ๊ณผ๋ฌผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. --- ## ๐Ÿš€ ์‹œ๊ฐํ™”
HTML Report
๋Œ€ํ™”ํ˜• HTML ๋ณด๊ณ ์„œ
Temporal Coupling
์‹œ๊ฐ„์  ๊ฒฐํ•ฉ ๋ถ„์„
Ghost Mode
์•„ํ‚คํ…์ฒ˜ ๊ณ ์ŠคํŠธ ๋ชจ๋“œ
Health Trend
์ƒํƒœ ์ ์ˆ˜ ์ง„ํ™”
Risk Heatmap
๋Œ€ํ™”ํ˜• ์œ„ํ—˜ ํžˆํŠธ๋งต
Real-time TUI
๊ณ ๊ธ‰ TUI ๋Œ€์‹œ๋ณด๋“œ
--- ## ๐ŸŒ ํ˜„์ง€ํ™” ์—ฌ๋Ÿฌ ์–ธ์–ด์— ๋Œ€ํ•œ ์ „์ฒด ์ง€์›: ```bash # ํ”„๋ž‘์Šค์–ด๋กœ ๋„์›€๋ง ๋ณด๊ธฐ codepulse --help --lang fr # ์šฐํฌ๋ผ์ด๋‚˜์–ด๋กœ ์Šค์บ” codepulse scan . --lang ua # ๋…์ผ์–ด๋กœ Watch codepulse watch . --lang de ``` **์ง€์› ์–ธ์–ด:** English, ะฃะบั€ะฐั—ะฝััŒะบะฐ, ะ ัƒััะบะธะน, ฤŒeลกtina, ํ•œ๊ตญ์–ด, Deutsch, Franรงais --- ## ๐Ÿ’ป ์‹œ์Šคํ…œ ์š”๊ตฌ ์‚ฌํ•ญ - **Node.js**: 16.0.0+ - **OS**: Linux, macOS, Windows - **RAM**: 512MB (๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ 1GB ์ด์ƒ ๊ถŒ์žฅ) --- ## ๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์‹œ์ž‘ํ•˜๋ ค๋ฉด [๊ธฐ์—ฌ ๊ฐ€์ด๋“œ](../CONTRIBUTING.md)๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ```bash git clone https://github.com/archpulse/codepulse-cli.git npm install npm test npm run dev -- scan . ``` --- ## ๐Ÿ“„ ๋ผ์ด์„ ์Šค MIT License ยฉ 2024 ArchPulse ---
### โญ CodePulse๊ฐ€ ๋งˆ์Œ์— ๋“œ์‹œ๋‚˜์š”? GitHub์—์„œ ๋ณ„์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”! **archpulse**