diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c4f8c64..76bf0e4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,7 +17,7 @@ This document is optimized for first-time contributors. If you are looking for a Prerequisites: -- macOS +- macOS only (current Swift parser build/runtime path is macOS-dependent) - Rust toolchain - Swift toolchain / Xcode command line tools - Node.js 20+ @@ -30,6 +30,18 @@ cd parsers/swift-ast && swift build -c release && cd ../.. cd editor/vscode && npm ci && npm run compile && cd ../.. ``` +## Contribution Rights (Public Beta) + +FlowMap is currently public beta and all rights are reserved by the author for the beta period. + +By submitting a pull request, patch, or issue attachment with code/content, you confirm: + +- You have the legal right to submit that contribution. +- You grant the maintainer a non-exclusive, worldwide, royalty-free license to use, modify, and redistribute your contribution as part of this repository during public beta. +- You do not submit third-party code/assets with incompatible terms. + +Final outbound licensing terms for the project will be announced after the public beta period. + ## Required Checks Before PR Run these in repo root: @@ -87,4 +99,3 @@ Bundled validation reports live under `reports/`. If you update benchmark/replay - what dataset/repo was used - command used - summary metrics (TP/TN/FP/FN, detection rate) - diff --git a/README.ja.md b/README.ja.md index dceac9a..9c679ec 100644 --- a/README.ja.md +++ b/README.ja.md @@ -4,7 +4,7 @@ > Swift コードの構造と呼び出し関係をグラフ分析するツールです。AI が生成したコード変更の検証に特に役立ちます。 -[![CI](https://github.com/adgk2349/FlowMap/actions/workflows/ci.yml/badge.svg)](https://github.com/adgk2349/FlowMap/actions/workflows/ci.yml) +[![CI](https://github.com/adgk2349/FlowMap-AI_Code_Hallucination_Guard_for_Swift/actions/workflows/ci.yml/badge.svg)](https://github.com/adgk2349/FlowMap-AI_Code_Hallucination_Guard_for_Swift/actions/workflows/ci.yml) [English](README.md) · [한국어](README.ko.md) @@ -21,6 +21,16 @@ FlowMap は Swift コードを解析し、ファイル・型・関数・呼び FlowMap はコンパイラの代替ではありません。実際のコード構造をワークスペースレベルで見える化し、関係を直接確認できる実用的な解析ツールです。 +## なぜ JavaScript 比率が最も高いのか + +GitHub の言語比率は「解析対象言語」ではなく「実装レイヤー構成」を示します。 + +- JavaScript/TypeScript: VS Code 拡張ホスト + グラフ Webview UI +- Rust: コアのグラフエンジンと diff/impact 処理 +- Swift: SwiftSyntax ベースの AST パーサ + +FlowMap の対象は Swift コードですが、エディタ統合/UI 実装があるため JS 比率が高く見えます。 + ## こんな方に - AI 支援コーディングツールを使っていて、何が実際に変わったかを確認したい開発者 @@ -40,6 +50,18 @@ FlowMap はコンパイラの代替ではありません。実際のコード構 - **Calls** — 呼び出しクラスタ探索 - 保存時の自動再解析 +## Cross-file 呼び出しリンクの現在の境界(beta) + +FlowMap は誤リンクを抑えるため、cross-file 呼び出し解決を保守的に行います。そのため、動的/間接的なパターンでは具象実装ではなくインターフェース境界として表示される場合があります。 + +- プロトコル型変数の呼び出しは、プロトコル requirement 側のエッジに留まることがあります。 + - 例: `let svc: NetworkServiceProtocol = LiveService(); svc.fetchData()` +- 別ファイルの extension メソッドは受け手型コンテキストが明確ならリンクされますが、`where` 制約付き extension dispatch は部分リンクになることがあります。 +- ジェネリクス制約呼び出しは、単一の具象型ではなくジェネリクス/プロトコル境界に解決されることがあります。 + - 例: `func run(_ t: T) { t.work() }` + +これは現行 Public Beta における意図的な保守挙動で、段階的に拡張中です。 + ## スクリーンショット ### Overview モード @@ -58,18 +80,20 @@ FlowMap はコンパイラの代替ではありません。実際のコード構 ### 前提条件 -- macOS(Swift パーサの実行に必要) +- macOS 専用(Swift パーサ実行に必須) - Rust toolchain([rustup.rs](https://rustup.rs)) - Swift toolchain / Xcode command line tools - Node.js v20 以上 - VS Code +> プラットフォーム注記: 現在の Swift パーサのビルド/実行経路は macOS の Swift toolchain 前提に依存しているため、Linux/Windows は未対応です。 + ### ビルド **1. リポジトリをクローン** ```bash -git clone https://github.com/adgk2349/FlowMap.git +git clone https://github.com/adgk2349/FlowMap-AI_Code_Hallucination_Guard_for_Swift.git FlowMap cd FlowMap ``` diff --git a/README.ko.md b/README.ko.md index 3c7ca9e..3198ec8 100644 --- a/README.ko.md +++ b/README.ko.md @@ -4,7 +4,7 @@ > Swift 코드의 구조와 호출 관계를 그래프로 분석하는 도구입니다. AI가 생성한 코드 변경을 검증할 때 특히 유용합니다. -[![CI](https://github.com/adgk2349/FlowMap/actions/workflows/ci.yml/badge.svg)](https://github.com/adgk2349/FlowMap/actions/workflows/ci.yml) +[![CI](https://github.com/adgk2349/FlowMap-AI_Code_Hallucination_Guard_for_Swift/actions/workflows/ci.yml/badge.svg)](https://github.com/adgk2349/FlowMap-AI_Code_Hallucination_Guard_for_Swift/actions/workflows/ci.yml) [English](README.md) · [日本語](README.ja.md) @@ -21,6 +21,16 @@ FlowMap은 Swift 코드를 파싱해 파일, 타입, 함수, 호출 관계를 FlowMap은 컴파일러 대체제가 아닙니다. 실제 코드 관계를 눈으로 볼 수 있게 해주는 실용적인 워크스페이스 수준 분석 도구입니다. +## 왜 JavaScript 비중이 가장 큰가요? + +GitHub 언어 비율은 "분석 대상 언어"가 아니라 "구현 계층 비율"을 반영합니다. + +- JavaScript/TypeScript: VS Code 확장 호스트 + 그래프 웹뷰 UI +- Rust: 핵심 그래프 엔진, diff/impact 처리 +- Swift: SwiftSyntax 기반 AST 파서 + +즉 FlowMap의 분석 대상은 Swift가 맞고, JS 비중이 큰 이유는 에디터/UI 통합 코드가 포함되기 때문입니다. + ## 이런 분께 유용합니다 - AI 보조 코딩 도구를 활용하면서 실제로 무엇이 바뀌었는지 검증하고 싶은 개발자 @@ -40,6 +50,18 @@ FlowMap은 컴파일러 대체제가 아닙니다. 실제 코드 관계를 눈 - **Calls** — 호출 군집 탐색 - 저장 시 자동 재분석 +## Cross-file 호출 연결 한계 (현재 베타) + +FlowMap은 false link를 줄이기 위해 cross-file 호출을 보수적으로 연결합니다. 그래서 일부 동적/간접 패턴은 구체 구현 대신 인터페이스 경계 수준으로 표시될 수 있습니다. + +- 프로토콜 타입 변수 호출은 프로토콜 requirement 엣지로 남을 수 있습니다. + - 예: `let svc: NetworkServiceProtocol = LiveService(); svc.fetchData()` +- 파일이 다른 extension 메서드는 수신 타입 문맥이 명확하면 연결되지만, `where` 제약이 있는 extension dispatch는 부분 연결이 남을 수 있습니다. +- 제네릭 제약 호출은 단일 concrete 타입 대신 제네릭/프로토콜 경계로 해석될 수 있습니다. + - 예: `func run(_ t: T) { t.work() }` + +이 동작은 현재 퍼블릭 베타에서 의도된 보수적 동작이며, 점진적으로 확장 중입니다. + ## 스크린샷 ### Overview 모드 @@ -58,18 +80,20 @@ FlowMap은 컴파일러 대체제가 아닙니다. 실제 코드 관계를 눈 ### 준비물 -- macOS (Swift 파서 실행에 필요) +- macOS 전용 (Swift 파서 실행에 필요) - Rust toolchain ([rustup.rs](https://rustup.rs)) - Swift toolchain / Xcode command line tools - Node.js v20 이상 - VS Code +> 플랫폼 안내: 현재 Swift 파서 빌드/실행 경로가 macOS Swift toolchain 가정에 의존하므로 Linux/Windows는 아직 지원하지 않습니다. + ### 빌드 **1. 레포 클론** ```bash -git clone https://github.com/adgk2349/FlowMap.git +git clone https://github.com/adgk2349/FlowMap-AI_Code_Hallucination_Guard_for_Swift.git FlowMap cd FlowMap ``` diff --git a/README.md b/README.md index 66e7b79..11d6688 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ > Swift code graph and impact analysis tool — understand and verify code structure, especially when reviewing AI-generated changes. -[![CI](https://github.com/adgk2349/FlowMap/actions/workflows/ci.yml/badge.svg)](https://github.com/adgk2349/FlowMap/actions/workflows/ci.yml) +[![CI](https://github.com/adgk2349/FlowMap-AI_Code_Hallucination_Guard_for_Swift/actions/workflows/ci.yml/badge.svg)](https://github.com/adgk2349/FlowMap-AI_Code_Hallucination_Guard_for_Swift/actions/workflows/ci.yml) [한국어](README.ko.md) · [日本語](README.ja.md) @@ -21,6 +21,16 @@ It answers questions like: FlowMap is not a compiler replacement. It makes real code structure visible at the workspace level so you can verify relationships directly rather than inferring them. +## Why JavaScript is the largest language share + +GitHub language percentages reflect implementation layers, not analysis target language. + +- JavaScript/TypeScript: VS Code extension host + graph webview UI +- Rust: core graph engine and diff/impact processing +- Swift: SwiftSyntax-based AST parser used as the frontend parser + +FlowMap still targets Swift codebases; the JS-heavy ratio comes from editor/runtime integration. + ## Who it is for - Developers using AI-assisted coding tools who want to verify what actually changed @@ -40,6 +50,19 @@ FlowMap is not a compiler replacement. It makes real code structure visible at t - **Calls** — call-cluster exploration across the workspace - Auto-analyze on save +## Cross-file call-linking boundaries (current beta) + +FlowMap intentionally resolves cross-file calls conservatively to reduce false links. This means some dynamic/indirect patterns are represented at interface level rather than concrete implementation level. + +- Protocol-typed call sites may stay on protocol requirement edges. + - Example: `let svc: NetworkServiceProtocol = LiveService(); svc.fetchData()` +- Extension methods across files are linked when receiver/type context is explicit, but constrained extension dispatch can remain partial. + - Example: extension methods with additional `where` constraints. +- Generic constraint calls may resolve to the generic/protocol boundary instead of a single concrete type. + - Example: `func run(_ t: T) { t.work() }` + +This behavior is expected in current public beta and is being expanded incrementally. + ## Screenshots ### Overview mode @@ -58,18 +81,20 @@ FlowMap is not a compiler replacement. It makes real code structure visible at t ### Prerequisites -- macOS (required for the Swift parser) +- macOS only (required for the Swift parser) - Rust toolchain ([rustup.rs](https://rustup.rs)) - Swift toolchain / Xcode command line tools - Node.js v20 or later - VS Code +> Platform note: Linux/Windows are not supported yet because the current Swift parser build/runtime path depends on macOS Swift toolchain assumptions. + ### Build **1. Clone the repository** ```bash -git clone https://github.com/adgk2349/FlowMap.git +git clone https://github.com/adgk2349/FlowMap-AI_Code_Hallucination_Guard_for_Swift.git FlowMap cd FlowMap ``` diff --git a/docs/releases/v0.1.0-beta.1.md b/docs/releases/v0.1.0-beta.1.md new file mode 100644 index 0000000..30a2ff5 --- /dev/null +++ b/docs/releases/v0.1.0-beta.1.md @@ -0,0 +1,46 @@ +# FlowMap v0.1.0-beta.1 — Public Beta + +FlowMap Public Beta release. + +## Highlights + +- Workspace-level Swift graph analysis (file/type/function/call edges) +- Graph diff + impact visualization in VS Code +- Auto-analyze on save +- Updated screenshots and docs (EN/KR/JP) +- Contributor onboarding docs/templates added + +## Validation Summary + +- Replay total pairs: **209** +- TP / TN / FP / FN: **106 / 97 / 0 / 6** +- Non-Swift FP Rate: **0%** +- Swift Detection Rate: **94.64%** +- Overall Match Rate: **97.13%** +- Sample scenarios: **60/60 PASS** (FP 0, FN 0) +- Public Beta Gate: **PASS** + +Validation artifacts: + +- `reports/replay-validation-bundle.md` +- `reports/replay-validation-bundle.json` +- `reports/sample-scenarios-report.json` +- `reports/public-beta-validation-detail.md` +- `reports/public-beta-validation-detail.json` + +## Known Limitations + +- License enforcement is currently local/dev-preview level (production server-side enforcement is not implemented yet). +- Some Swift call-resolution edge cases remain and are being improved. + +## Release Process Note + +GitHub Actions minutes were exhausted during this cycle. +This release was validated with local reproducible checks and pushed directly without full PR checks. + +## License (Beta) + +Final licensing terms will be announced after the beta period. +Until then, all rights are reserved by the author, except evaluation use for public beta. + +Commercial use or redistribution: adgk2349b@gmail.com diff --git a/editor/vscode/package.json b/editor/vscode/package.json index 9dc08b4..00e904e 100644 --- a/editor/vscode/package.json +++ b/editor/vscode/package.json @@ -5,7 +5,7 @@ "version": "0.1.0", "repository": { "type": "git", - "url": "https://github.com/adgk2349/FlowMap.git" + "url": "https://github.com/adgk2349/FlowMap-AI_Code_Hallucination_Guard_for_Swift.git" }, "engines": { "vscode": "^1.85.0"