dartograph 0.3.0
dartograph: ^0.3.0 copied to clipboard
Evidence-backed dependency graph analysis for Dart and Flutter codebases.
Changelog #
0.3.0 #
-
.values로만 소비되는 enum 상수의 미도달 오탐 수정- enum 상수는 enum→상수
member간선만 있어 사용으로 치지 않고, 컨테이너 구제는 멤버→컨테이너 단방향이라 상수를 살리지 못했다.Status.values처럼 개별 상수를 직접 참조하지 않는 소비만 있으면 도달 가능한 enum의 상수까지dead로 잘못 보고됐다 - 이제 enum이 도달 가능하면 그 상수도 보존하고,
explain은retained by its reachable enum근거와 enum까지의 실제 경로를 돌려준다. enum 자체가 미도달이면 상수도 계속 보고한다 - 노드 직렬화에 enum-상수 표시를 추가해 캐시 스키마를 v2로 올린다. 옛 캐시는 decode에서 거부되어 재분석된다
- enum 상수는 enum→상수
-
Flutter 채널 사실 추출의 조용한 누락·전면 실패 결함 수정
- 클래스 등 선언 본문에서
static final _channel = MethodChannel(...)이 사용처보다 뒤에 선언되면 method-invoke 사실이 통째로 누락되고 위치·심볼 없는unresolved-receiver-invocations카운트로 강등됐다. 이제 선언 본문의 필드를 먼저 훑어 선언 순서와 무관하게 해결한다. 동명 최상위 채널을 가리는 규칙은 유지된다 MethodChannel('')처럼 빈 채널·메서드 이름 한 줄이bridges출력 전체를 실패시키고 파일·줄 정보도 남기지 않았다. 이제 그 사실만 건너뛰고empty-bridge-names한계로 집계하며 나머지 사실은 정상 출력한다. 제어 문자가 든 이름은 계속 전면 거부한다
- 클래스 등 선언 본문에서
-
dead --since가diff.relative=true와 하위 패키지에서 변경 파일을 놓치던 문제 수정git diff가 cwd 상대 경로를 출력하는데 저장소 루트와 join해 경로가 어긋나고 발견이 전부 사라졌다(종료 0). 이제git을-c diff.relative=false로 실행해 항상 저장소 루트 기준 경로를 쓴다
-
옵션 모양의 값을 경로로 받아들이던 문제 수정
baseline --write --force .은--force라는 이름의 파일을 실제로 만들고 성공을 보고했다. 이제 인덱싱과 쓰기 전에 usage 오류(64)로 거부한다- 값이 빠진 호출이 분석 실패(2)가 아니라 usage 오류(64)가 된다.
query·bridges·graph의 패키지 루트,rules --config와dead --baseline·--since의 값이 대상이다 compare는--만 검사해compare -h .처럼 실재하는 짧은 옵션을 경로로 받았다. 단일 대시도 거부한다- 좁은 파괴적 변경:
-로 시작하는 경로를 그대로 넘겨 동작하던 호출(예:baseline --write -b.json .)은 이제 64다../-name으로 바꿔 전달한다.bridges는 기존--이스케이프도 그대로 쓸 수 있다. 문서화된 적 없는 암묵적 허용이었고,query --batch는 처음부터 같은 제약을 두고 있었다
-
dead --explain이 멤버로 보존된 컨테이너를 미도달로 단정하던 문제 수정- 같은 실행의
dead가 발견에서 제외한 선언을explain은 "unreachable from all retention roots"로 답하고 종료 코드 1을 냈다 - 이제
retained by a reachable member근거와 witness 멤버, 그 멤버까지의 실제 경로를 함께 돌려주고 종료 코드 0을 낸다 query의retainedByMember상태와compare의 witness 표기는 그대로 유지된다
- 같은 실행의
-
심볼릭 링크로 연결된 Dart 소스를 분석 캐시 입력과 bridge 스캔에 포함
- analyzer는 파일·디렉터리 링크를 모두 따라가 분석하는데 입력 목록에서는 빠져 있어, 링크 대상을 수정해도 캐시 키가 그대로여서 낡은 그래프를 돌려주던 문제를 수정한다
- 같은 이유로 누락되던 링크된 소스의 플랫폼 채널 사실도 추출한다
- 디렉터리 링크는 이미 따라간 실제 경로를 기록해 순환에서 무한 순회하지 않는다
- 끊어진 링크는 대상이 없으므로 계속 제외한다
-
dartograph.yaml의entry_points로 실제 build target을 선언해main보존 루트를 좁히는 옵션 추가- 설정하지 않으면 기존 보수 정책(
lib/·bin/·example/의 모든main)을 유지한다 - 빈 문서와 주석뿐인 문서도 선언한 진입점이 없으므로 같게 보아 기본 정책을 유지하고, 비어 있지 않은 비-mapping 문서만 거부한다
- 비어 있거나 절대·루트 밖·비문자열·
lib/·bin/·example/범위 밖·존재하지 않거나.dart가 아닌 경로는 조용히 무시하지 않고 분석 실패로 알린다 - 존재하지만
main이 없는 진입점은configured-entry-point-without-main한계로 보고한다 - 보존 루트 의미가 바뀌므로 해석 캐시 identity를 v3로 갱신하고 설정을 캐시 키에 포함한다
- 설정하지 않으면 기존 보수 정책(
0.2.0 #
- 소스별 분석 오류·미해석 호출·조건부 구성의 한계를 finding에 연결
- 단일 색인·도달성 계산을 공유하는
query --batch와 라이브러리용SymbolQuerySession - 두 checkout의 그래프 변화와 사라진 도달 경로를 설명하는
compare - bridge fact에 지원되는 Dart 선언 이름을 추가하고 isthmus 양방향 근거 왕복 검증
- 소스 변형 회귀 평가와 질의 세션 성능 측정 도구
0.1.1 #
- isthmus GRAPH-EXCHANGE v1에 맞춘 UTC 밀리초 생성 시각과 UTF-8 byte 위치
- Flutter services import provenance와 어휘 범위를 따르는 MethodChannel 추출
- cascade와 invokeListMethod/invokeMapMethod, 동적 이름 fact와 미귀속·잘못된 호출 limitation 보강
- EventChannel·BasicMessageChannel, 조건부 import, re-export를 거짓 사실 대신 limitation으로 보고
- Flutter services re-export를 거친 사용은 추측하지 않고 문서화된 누락 방향으로 보존
- explain의 미발견·파일 근거, analyzer 신원·생성 코드·중첩 의존 캐시 판정 보강
- 잘못된 CLI 호출과 Git 실패를 구분하고 옵션 모양의 skill 경로를 거부
0.1.0 #
- Dart analyzer 14.3.0 기반의 결정적 심볼·파일 의존성 그래프
- 근거와 한계를 포함하는
dead,query,cycles,rules,metrics - DOT, Mermaid, JSON, text, GitHub Actions, SARIF 출력
- baseline과 Git 변경 범위를 조합하는
--since - 내용·분석기 신원 기반의 손상 허용 영속 사실 캐시
- package barrel 공개 API, 다중 main, override, 생성 코드, 테스트, 플러그인 보존 규칙
- Flutter 플랫폼 채널 교환 사실을 내보내는
bridges - 에이전트용 안전 지침을 출력·설치하는
skill - 종료 코드
0/1/2/64, 오탐 코퍼스, 90% 라인 커버리지 게이트 - 대형 프로젝트의 보존 루트 근거를 count·20개 sample·truncated 표시로 제한
dartograph는 MIT 라이선스로 상업적 사용을 포함해 영구 무료이며, 삭제 판정이나 자동 삭제 기능을 제공하지 않는다.