JS / TS · CLI · 설치 없이zero install

남이 머지해준 규칙으로,
내 코드의 고칠 줄을.

Rules strangers merged.
The lines to fix in yours.

npx 한 줄이면 내 JS·TS 코드에서 고칠 자리를 파일과 줄로 짚어준다.

그 규칙은 전부 남의 저장소에 PR 로 내서 검증한다. 메인테이너가 머지하거나 거절하고, 거절 사유까지 그대로 공개한다. 점수는 스스로 매기지만 머지는 꾸밀 수 없다.

One npx command points at the file and line to fix in your JS/TS code.

Every rule is verified by opening a PR on a stranger's repo. A maintainer merges it or turns it down, and the rejections are published verbatim. A score grades itself; a merge can't be faked.

$npx fixearly --dir=src
유명 OSSmeasured 74 비교 기준baselines 체급 6 · 종류 56 sizes · 5 kinds 진단diagnostics 24 채점축scored axes 6
1배운다 · 고칠 규칙Learn · fix rules92고친다 · PRFix · PRs853판정 · 머지Verdict · merged374다진다 · 오탐 가드Sharpen · FP guards50
37PR 머지됨PRs merged규칙 6개가 찾아냄found by 6 rules

쓰기만 하는 컬렉션 15O(n²) 조회 12불필요한 순차 I/O 4버린 반환값 3버려진 Promise 2전역 정규식 상태 1Write-only collection 15O(n²) lookup 12Needless sequential I/O 4Discarded pure call 3Floating promise 2Stateful /g regex 1남의 저장소에서 머지된 PR 과 남의 코드에서 고칠 규칙을 뽑고, 그 규칙으로 다른 저장소를 고쳐 PR 을 낸다. 머지·거절이 다시 규칙을 다듬는다 — 규칙 9개 중 6개가 머지로 검증 · 저장소 26곳 · 거절 26 · 대기 22. Fix rules come from PRs strangers merged and from strangers' code; we apply them to other repos as PRs, and merges and rejections sharpen them again — 6 of 9 rules verified by a merge · 26 projects · closed 26 · open 22. 전체 기록 →Full record →

규칙은 이렇게 단련된다.

How the rules get hardened.

01

남이 이미 고친 걸 읽는다

Read what others already fixed

머지된 성능 PR 909건을 긁어 형태로 묶는다. 무엇이 실제로 고쳐지는지가 거기 있다 — 그리고 기계로 잡을 수 있는 건 5%뿐이라는 것도.

We mine 909 merged performance PRs and group them by shape — what actually gets fixed, and that only 5% is mechanizable.

02

남의 코드에 걸어본다

Run it on strangers' code

규칙 후보를 오픈소스 74곳에 걸고 걸린 자리를 하나씩 손으로 연다. 쓰기만 하는 컬렉션 은 15건 전부 진짜여서 올렸고, 해제할 수 없는 등록 은 16건 중 1건만 진짜라 떨어뜨렸다.

Candidate rules run against 74 open-source repos; every hit gets opened by hand. write-only collection was 15/15 real and shipped; unremovable registration was 1/16 and got dropped.

03

직접 내본다

Submit it ourselves

규칙이 짚은 자리를 PR 로 낸다. 남의 저장소 메인테이너가 받아주거나 거절한다. 점수는 자기가 자기를 채점하지만 머지는 못 조작한다.

We open PRs for what the rules flag. A stranger's maintainer merges it or turns it down. A score grades itself; a merge can't be faked.

아래는 ③의 전체 기록이다. 닫힌 것도 사유와 함께 그대로 싣는다 — 거절이 통과보다 정보가 많다. 끝난 것은 접어두기만 했으니 버튼으로 편다.

Below is the full record of ③. Closed ones stay, with the reason verbatim — a rejection carries more information than a pass. Finished ones are only folded away; the buttons unfold them.

머지된 37건은 0~20일 만에 들어갔다.

The 37 merged PRs went in within 0–20 days.

26개 저장소에서repos with merged PRs 37건 PR 머지 성공 · 목표 100건PRs merged · goal 100
승인·진행 중 우선 · 최신순Approved, then active · newest first
FastGPT29.8kAI 에이전트·지식베이스 빌더 · 기여자 약 197명AI agent and knowledge base builder · ~197 contributors모델 변경 후 QA 재학습이 옛 모델로 돈다QA jobs released before the new agent model is saved닫힘closed1일 만에in 1d / 보통 4일 / usually 4d수락 65%65% merged#7918메인테이너: catch-all 이라 await 없이도 기대대로 동작한다 · 새 버전에서 이 자동 갱신·재시도 자체를 없앴다maintainer: it is a catch-all that works as intended without awaiting, and the new version removes this auto refresh/retry entirely grafana77.2k관측·대시보드 · 기여자 약 3,142명observability dashboards · ~3,142 contributors히트맵 버킷 증분의 쓰기만 하는 Mapwrite-only decimals map in heatmap bucket increments닫힘closed당일same day / 보통 1일 / usually 1d수락 80%80% merged#133985우리가 접었다 — 게이트 0 을 안 읽었다: 모든 커밋 서명 필수인데 서명 키가 없었다. 브랜치를 되돌리자 GitHub 가 자동으로 닫았다we closed it — missed gate 0: every commit must be signed and we had no signing key; resetting the branch auto-closed the PR openstatus9.2k상태 페이지·업타임 모니터링 · 기여자 약 126명status pages & uptime monitoring · ~126 contributors알림 목록의 모니터 관계 반복 검색repeated notification monitor association scans닫힘closed1일 만에in 1d / 보통 4일 / usually 4d수락 88%88% merged#2780메인테이너가 V1 API 폐기 예정이라고 밝혀 우리가 닫았다we closed it after the maintainer said the V1 API is deprecated react250.8kUI 라이브러리 · 컴파일러 · 기여자 약 2,020명UI library and compiler · ~2,020 contributorsReact 컴파일러 패스의 쓰기만 하는 컬렉션write-only collections in React Compiler passes닫힘closed당일same day / 보통 4일 / usually 4d수락 13%13% merged#37698잘못된 GitHub 계정(yoominho91)으로 제출해 닫고 irontaek의 #37699로 교체했다closed after submission from the wrong GitHub account (yoominho91); replaced by irontaek's #37699 eslint27.6k자바스크립트 린터 · 기여자 약 1,254명JavaScript linter · ~1,254 contributorsno-duplicate-case 이전 case 재스캔no-duplicate-case rescans earlier cases닫힘closed당일same day / 보통 3일 / usually 3d수락 64%64% merged#21317AI 보조 PR 은 선행 이슈가 필요하다는 정책(게이트 0, 우리가 안 읽었다) · 메인테이너는 이득도 의심했다 — "린터는 보통 생성 코드를 안 훑는다"their AI policy requires a backing issue for AI-assisted PRs (a gate we had not read), and the maintainer doubted the benefit: linters usually do not run on generated code vscode193.5k코드 에디터 · 기여자 약 3,263명code editor · ~3,263 contributors툴 피커 안 미사용 Mapunused MCP server map in the tools picker닫힘closed11일 만에in 11d / 보통 1일 / usually 1d수락 86%86% merged#334230우리가 접었다 — 12일째 사람 리뷰 0(반응은 봇뿐), 09-12 핑에도 무응답. 슬롯을 회수했다we closed it — no human review in 12 days (bots only) and no reply to the 09-12 ping, so we reclaimed the slot openstatus9.2k상태 페이지·업타임 모니터링 · 기여자 약 126명status pages & uptime monitoring · ~126 contributorsHono 보안 패치 · 의존성 점검Hono security patch · dependency audit닫힘closed27일 만에in 27d / 보통 4일 / usually 4d수락 88%88% merged#2620상위 #2751 의존성 업데이트로 Hono 4.13.8·node-server 2.1.1이 반영돼 보안 목표가 충족됐다. 이 PR은 미병합upstream #2751 updated Hono to 4.13.8 and node-server to 2.1.1, covering the security goal; this PR was not merged budibase28.3k사내 도구 빌더 · 기여자 약 148명internal tools builder · ~148 contributorsstatic formula 갱신 enriched row 조회 O(n²)static formula enriched-row lookup O(n²)닫힘closed당일same day / 보통 1일 / usually 1d수락 65%65% merged#19555게이트 0 — 외부 PR 은 "작성자에게 배정된" 이슈를 참조해야 하는데 배정은 메인테이너만 한다gate 0 — external PRs must reference an issue assigned to the author, and only maintainers can assign ghost55.5k퍼블리싱·뉴스레터 · 기여자 약 931명publishing & newsletters · ~931 contributorspost relation 연결 반복 조회repeated post lookup while attaching import relations닫힘closed14일 만에in 14d / 보통 1일 / usually 1d수락 91%91% merged#30284우리가 접었다 — 중앙 1.8일인 곳에서 15일째 사람 반응 0. 09-01 에 핑도 보냈지만 답이 없었다we closed it — 15 days with zero human response in a repo whose median is 1.8 days, including a ping on Sep 1 that went unanswered n8n206.9k워크플로 자동화 · 기여자 약 812명workflow automation · ~812 contributorscredential 삭제 완료 전 명령 종료credential uninstall exits before deletions finish닫힘closed36일 만에in 36d / 보통 1일 / usually 1d수락 90%90% merged#37047승인 뒤 merge queue 의 CLA 검사가 PR 을 연 계정(yoominho91)을 미서명으로 잡았다. 같은 커밋으로 irontaek 이 #40103 을 다시 열었다approved, but the merge queue's CLA check flagged the opening account (yoominho91) as unsigned; reopened as #40103 from irontaek with the same commits nx29.4k모노레포 빌드 시스템 · 기여자 약 1,310명monorepo build system · ~1,310 contributorsgraph 명령 안 미사용 Mapunread task graph cache in the graph command닫힘closed34일 만에in 34d / 보통 1일 / usually 1d수락 85%85% merged#36633우리가 접었다 — 34일째 사람 리뷰 0(반응은 봇뿐), 09-12 핑에도 무응답. 슬롯을 회수했다we closed it — no human review in 34 days (bots only) and no reply to the 09-12 ping, so we reclaimed the slot astro63.2k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명web framework · ~1,245 contributors스택 트레이스 절반 유실printed error stacks lose every other frame닫힘closed24일 만에in 24d / 보통 1일 / usually 1d수락 77%77% merged#17665우리가 접었다 — 중앙 2일인 곳에서 24일째 사람 반응 0. CI 는 통과 상태였다we closed it — 24 days with zero human response in a repo whose median is 2 days; CI was green storybook91.2kUI 컴포넌트 개발·문서화 · 기여자 약 2,801명UI component workshop · ~2,801 contributorsinvalidate() 안 미사용 Setunread invalidated Set in the story index닫힘closed25일 만에in 25d / 보통 6일 / usually 6d수락 84%84% merged#35829우리가 접었다 — Danger 가 `ci:*`·`qa:*` 라벨에서 막는데 그 라벨은 메인테이너만 붙일 수 있다 (게이트 0)we closed it — Danger blocks on `ci:*` and `qa:*` labels only a maintainer can add, so nothing was actionable from our side excalidraw133.6k화이트보드 · 손그림 다이어그램 · 기여자 약 378명virtual whiteboard · ~378 contributorsresize 핸들러 안 미사용 Mapunused Map in resize handler닫힘closed34일 만에in 34d#11805우리가 접었다 — 중앙 1일인 곳에서 34일째 사람 반응 0. 이 저장소 외부 PR 수락률 18%we closed it — 34 days with zero human response in a repo whose median is 1 day; external acceptance here is 18% typeorm36.7kTypeScript ORM · 기여자 약 1,258명TypeScript ORM · ~1,258 contributorsloadTables 카탈로그 전량 재스캔loadTables full catalog rescan닫힘closed45일 만에in 45d / 보통 15일 / usually 15d수락 40%40% merged#12746우리가 접었다 — 46일째 사람 리뷰 0(반응은 봇뿐), 09-12 핑에도 무응답. 슬롯을 회수했다we closed it — no human review in 46 days (bots only) and no reply to the 09-12 ping, so we reclaimed the slot langfuse35.6kLLM 관측·평가 · 기여자 약 221명LLM observability · ~221 contributorseval dataset item 반복 조회eval dataset item re-read닫힘closed37일 만에in 37d / 보통 1일 / usually 1d수락 87%87% merged#15585우리가 접었다 — 중앙 0.6일인 곳에서 37일째 사람 반응 0(붙은 건 CLA 봇뿐)we closed it — 37 days with zero human response in a repo whose median is 0.6 days budibase28.3k사내 도구 빌더 · 기여자 약 148명internal tools builder · ~148 contributorsExternalRequest field lookup O(n²)닫힘closed3일 만에in 3d / 보통 1일 / usually 1d수락 65%65% merged#19320사유 없이 닫힘. 요청받지 않은 최적화는 그냥 거절될 수 있다closed with no reason; unsolicited optimizations can simply be declined directus38.4k데이터 백엔드 · 기여자 약 589명data backend · ~589 contributorsparse-fields dedup O(n²)닫힘closed5일 만에in 5d / 보통 5일 / usually 5d수락 45%45% merged#27978"이 엣지 케이스의 성능 이득은 churn 을 정당화하지 못한다 — 더 큰 최적화 기회가 있다""performance gains for this edge case don't justify the churn … larger optimization opportunities" strapi73.3k헤드리스 CMS · 기여자 약 1,398명headless CMS · ~1,398 contributorsdoc-metadata localization O(n²)닫힘closed16일 만에in 16d / 보통 6일 / usually 6d수락 45%45% merged#27125우리가 접었다 — 중앙 2일인 곳에서 14일째 아무 반응이 없었다we closed it — 14 days with no response in a repo whose median is 2 days payload45.2k헤드리스 CMS · Next.js · 기여자 약 587명headless CMS · ~587 contributorsdataloader doc placement O(n²)닫힘closed16일 만에in 16d / 보통 1일 / usually 1d수락 88%88% merged#17469우리가 접었다 — 중앙 4일인 곳에서 14일째 아무 반응이 없었다we closed it — 14 days with no response in a repo whose median is 4 days cal.com48.9k일정 예약 · 기여자 약 981명scheduling · ~981 contributorslucky-user set rebuild in loop닫힘closed7일 만에in 7d / 보통 3일 / usually 3d수락 7%7% merged#29832우리가 접었다 — 같은 저장소에 2건이 열려 있어 큰 쪽(#29828)에 리뷰를 몰아줬다we closed it — two PRs open on one repo; we kept the bigger one (#29828) twenty58.2k오픈소스 CRM · 기여자 약 774명open-source CRM · ~774 contributorsnested relations hydration O(n²)닫힘closed당일same day / 보통 1일 / usually 1d수락 27%27% merged#23232겹친 2건 중 나머지. 사유는 남지 않았다the other of the overlapping pair; no reason given twenty58.2k오픈소스 CRM · 기여자 약 774명open-source CRM · ~774 contributorsview-widget-upsert O(n²)닫힘closed당일same day / 보통 1일 / usually 1d수락 27%27% merged#23231"redundant with #23232" — 같은 저장소에 겹치는 2건을 냈다"redundant with #23232" — two overlapping PRs in one repo cal.com48.9k일정 예약 · 기여자 약 981명scheduling · ~981 contributorsbooking member diff O(n²)닫힘closed15일 만에in 15d / 보통 3일 / usually 3d수락 7%7% merged#29828우리가 접었다 — 외부 기여자는 `required` 잡이 항상 실패한다 (게이트 0). 이 저장소 수락률 10%we closed it — the `required` job always fails for external contributors; this repository merges 10% of outside PRs novu40.1k알림 인프라 · 기여자 약 536명notification infrastructure · ~536 contributorssync-agent findOne N+1닫힘closed17일 만에in 17d / 보통 1일 / usually 1d수락 94%94% merged#12074우리가 접었다 — 중앙 1일인 곳에서 15일째 사람 리뷰 0(승인은 봇). 슬롯을 회수했다we closed it — 15 days in a repo whose median is 1 day, with zero human review (the approval was a bot) immich116k셀프호스팅 사진 보관 · 기여자 약 1,025명self-hosted photo library · ~1,025 contributorsdeleteBulkMetadata N+1닫힘closed15일 만에in 15d / 보통 1일 / usually 1d수락 46%46% merged#30163우리가 접었다 — `changelog:*` 라벨은 메인테이너만 붙일 수 있어 우리 쪽에서 더 할 게 없었다 (게이트 0)we closed it — the required `changelog:*` label can only be added by a maintainer, so nothing was actionable from our side

카드의 기여자 수는 기준 GitHub 커밋 작성자 집계다. 같은 사람의 여러 계정이나 봇이 각각 포함될 수 있다.

Contributor counts use GitHub commit authors as of . Multiple accounts for one person and bots may be counted separately.

머지됨 37 · 승인 · 머지 대기 1 · 리뷰 진행 1 · 아무도 안 봄 18 · 보류 2 · 닫힘 26 — 전체 기록은 IMPACT.md. 상태는 GitHub 에서 자동 갱신된다. 기준선은 각 저장소의 최근 닫힌 PR 60건 중 외부 기여자 머지의 중앙값이다 — 평균은 묵은 몇 건이 통째로 끌고 간다(next.js 는 평균 7.8일인데 중앙값 1.1일). 초록불은 그 안, 빨간불은 초과, 보라불은 +7일을 넘긴 보류다. 옆의 수락률은 그 저장소가 최근 닫힌 외부 PR 을 얼마나 머지했는지다 — 늦은 게 우리 것만 밀린 건지, 원래 대부분 거절인 곳인지를 가른다. 보류는 GitHub 에 없는 상태다 — 닫히지도 머지되지도 않은 채 그 저장소의 평소 속도를 크게 지난 것을 우리가 따로 센다.

37 merged · 1 approved · 1 in review · 18 nobody has looked · 2 stalled · 26 closed — full log in IMPACT.md, refreshed from GitHub. The baseline is the median of external-contributor merges among each repository's latest 60 closed PRs — a mean gets dragged by a few stale PRs (next.js averages 7.8 days but its median is 1.1). Green is within it; red is over; violet is stalled — past it by 7 days. The percentage next to it is how many recently closed external PRs that repository merged — it separates "ours is being skipped" from "this repo turns most outsiders down". Stalled is not a GitHub state: it is neither merged nor closed, just well past how fast that repository usually moves, and we count it separately.

디렉토리를 가리키면, 고칠 줄이 나온다.

Point it at a directory. Get the lines to fix.

빌드 산출물·테스트·벤더 파일은 알아서 제외한다. 빈 파일로 점수를 부풀리는 것도 막는다.

Build output, tests, and vendored files are excluded automatically — and padding with empty files won't inflate the score.

$ npx fixearly --dir=packages/vite/src

  git 추적 파일만 분석 — 빌드산출물 0개 제외 (382개 대상)
  비-프로덕션·벤더 파일 249개 제외 (133개 분석)
  자잘 파일(코드 <5줄) 1개 제외 — 패딩 게이밍 방지

  파일: 132개
  코드: 36,996줄
  등급: C+ (66점) — 함수 2,378개, cognitive 평균 3.1·최대 195,
             cog15+ 106개·cog25+ 56개, 중복 0.5%, 200줄+ 42개
    복잡: generateBundle cog 195 — node/plugins/importAnalysisBuild.ts:281
    복잡: ssrTransformScript cog 101 — node/ssr/ssrTransform.ts:59
    복잡: resolveConfig cog 98 — node/config.ts:1460
실제 출력 — vite 8.2 (웰터급, 36,996줄)real output — vite 8.2 (welterweight, 36,996 lines)

점수를 만드는 축 6개, 짚어주는 결함 24종.

Six axes make the score. Twenty-four diagnostics point at fixes.

감점 비중은 인지 복잡도 37 · 함수 길이 23 · 중복 9 · 파일 크기 8 · 순차 I/O 5 · O(n²) 5(캡 기준, 합 87). 나머지 24종은 등급을 건드리지 않고 파일·줄만 짚는다.

Caps by axis: complexity 37, function length 23, duplication 9, file size 8, sequential I/O 5, O(n²) 5 — 87 total. The other twenty-four never touch the grade; they name the file and line.

규칙 13개6개가 남의 저장소에 머지됨 · 37건13 rules6 merged upstream · 37 PRs
쓰기만 하는 컬렉션Write-only collection진단diagnostic머지 15건15 merged

채우기만 하고 아무도 읽지 않는 Set·Map·배열. 소비하던 코드가 리팩터로 사라진 흔적이라 지워도 동작이 같고, 매번 채우는 비용만 사라진다. knip 은 .add 도 "사용"으로 봐서 못 잡는다.A Set, Map, or array that is filled but never read — what a refactor left behind. Removing it changes nothing but the cost of filling it. knip misses it because .add counts as a use.

고치기 전Before
const seen = new Set();
for (const n of nodes) {
  seen.add(n.id); // 아무도 안 읽음
  render(n);
}
고친 후After
for (const n of nodes) {
  render(n);
}
O(n²) 조회O(n²) lookup채점 06scored 06머지 12건12 merged

행마다 다른 배열을 .find·.some·.includes 로 처음부터 훑는 자리. 한 번 Map·Set 으로 색인해두면 조회가 O(1)이 된다 — 데이터가 커질수록 차이가 제곱으로 벌어진다.Each row rescans another array with .find/.some/.includes. Index it once into a Map/Set and each lookup is O(1) — the gap grows with the square of the data.

테스트·프론트 구역, 정적 외곽, n 이 잘린 자리는 세지 않고 3곳 미만은 면제. 10k줄당 유예 1.0, 캡 5 — 판정 난 초기 PR 6건 중 4건이 닫혀서, 오탐이 등급을 뒤집지 않게 낮게 잡았다.Test/frontend zones, static outers, and capped-n sites are excluded; under three sites is free. Free below 1.0 per 10k lines, capped at 5 — four of the first six decided PRs were closed, so a false positive must not flip a grade.

고치기 전Before
for (const row of rows) {
  const user = users.find((u) => u.id === row.userId);
}
고친 후After
const byId = new Map(users.map((u) => [u.id, u]));
for (const row of rows) {
  const user = byId.get(row.userId);
}
불필요한 순차 I/ONeedless sequential I/O채점 05scored 05머지 4건4 merged

루프 한 바퀴마다 DB·네트워크를 부르는 N+1, 그리고 서로의 결과를 쓰지 않는 await 를 줄 세우는 것. IN (...) 한 번이나 Promise.all 로 묶으면 왕복이 셈으로 줄어든다.A DB or network call per loop pass (N+1), and awaits that never use each other's result queued one by one. One IN (...) or a Promise.all cuts the round trips — provable by counting.

같은 결함이라 한 축. 37곳 재측정에서 기존 점수와 rho=−0.18 로 독립이고 11곳(30%)에서 발동한다. 3곳 미만은 안 센다(재시도·커서 페이지네이션은 순차가 맞다). 유예 3.0/1000파일, 캡 5.One defect, one axis. Across 37 re-measured repos it is independent of the score (rho=−0.18) and fires in 11 (30%). Under three sites is ignored — retries and cursor pagination are meant to be serial. Free below 3.0 per 1,000 files, capped at 5.

고치기 전Before
const user = await getUser(id);
const posts = await getPosts(id);
고친 후After
const [user, posts] = await Promise.all([
  getUser(id),
  getPosts(id),
]);
버린 반환값Discarded pure call진단diagnostic머지 3건3 merged

s.replace(…)·arr.concat(…) 를 부르고 결과를 대입하지 않는다. 문자열은 불변이라 그 줄은 아무것도 안 한다 — 지우려던 줄이 남고, 붙이려던 말이 빠진다.Calls s.replace(…) or arr.concat(…) and drops the result. Strings are immutable, so the line does nothing — what it meant to remove stays, what it meant to append is lost.

고치기 전Before
slug.replace(/\s+/g, '-');
if (!ok) new Error('bad slug');
고친 후After
slug = slug.replace(/\s+/g, '-');
if (!ok) throw new Error('bad slug');
버려진 PromiseFloating promise진단diagnostic머지 2건2 merged

async 함수를 await 없이 부르고 결과를 버린다. 실패해도 아무도 모르고, 호출한 쪽은 끝나기 전에 다음 단계로 넘어간다.An async call with no await and nothing holding the result. Failures vanish, and the caller moves on before it finishes.

고치기 전Before
async function save(data) {
  writeCache(data);
  log('saved');
}
고친 후After
async function save(data) {
  await writeCache(data);
  log('saved');
}
전역 정규식 상태Stateful /g regex진단diagnostic머지 1건1 merged

/g 정규식을 공유한 채 루프에서 .test() 하면 lastIndex 가 다음 호출로 새어, 같은 입력에 참·거짓이 번갈아 나온다. 성능이 아니라 조용히 틀린 답이다.A shared /g regex used with .test() in a loop leaks lastIndex into the next call, so the same input flips between true and false. Not slow — silently wrong.

고치기 전Before
const TAG = /^v\d+/g;
tags.filter((t) => TAG.test(t));
고친 후After
const TAG = /^v\d+/;
tags.filter((t) => TAG.test(t));
return 없는 콜백Callback without return진단diagnostic

블록 본문 find·filter·some 콜백이 값을 돌려주지 않는다. 늘 undefined 라 find 는 아무것도 못 찾고, Promise.all 은 아무것도 안 기다린다.A block-bodied find/filter/some callback that never returns. It always yields undefined, so find finds nothing and Promise.all waits for nothing.

고치기 전Before
const user = users.find((u) => {
  u.id === id;
});
고친 후After
const user = users.find((u) => {
  return u.id === id;
});
같은 식 두 번 비교Self-comparison진단diagnostic

this.x === this.x·a.end || a.end 처럼 같은 식을 양쪽에 둔다. 늘 참이거나 늘 같은 값이라 비교하려던 다른 쪽이 빠진 자리다.The same expression on both sides — this.x === this.x, a.end || a.end. Always true or always the same value: the other operand it meant to compare is missing.

고치기 전Before
isEquivalent(e) {
  return this.xref === this.xref;
}
고친 후After
isEquivalent(e) {
  return this.xref === e.xref;
}
대기 11 openrgthree-comfy3.6k
forEach 안 awaitawait inside forEach진단diagnostic

forEach(async …) 는 콜백이 돌려주는 프라미스를 버린다. 호출한 쪽은 기다리지 않고 다음 줄로 가고, 안에서 난 실패는 아무도 못 본다.forEach(async …) drops the promise each callback returns. The caller moves on without waiting, and failures inside go unseen.

고치기 전Before
ids.forEach(async (id) => {
  await remove(id);
});
log('done');
고친 후After
for (const id of ids) {
  await remove(id);
}
log('done');
대기 11 openinsomnia40k
함수 길이Function length채점 01scored 01

한 번에 읽어야 하는 양. 중첩 함수·주석을 뺀 자기 코드 줄 기준, 40줄 초과(JSX 60줄) 비율. 파일을 쪼개도 안 변한다 — 그래서 조작이 안 된다.How much you must read at once — a function's own code lines, nested functions and comments removed. Splitting files doesn't move it, so it can't be gamed.

인지 복잡도Cognitive complexity채점 02scored 02

함수를 머리로 따라가는 부담. SonarSource S3776 스펙과 정본값까지 일치 검증.How hard a function is to follow. Matches SonarSource S3776, verified to canonical values.

중복Duplication채점 03scored 03

토큰 단위 복사·붙여넣기 밀도. 74개 실측에서 점수와 상관 −0.11이라 비중을 16→9로 줄였다 — 대부분에겐 0점, 소수에게만 큰 항목이다.Token-level copy-paste density. Correlates −0.11 with score across 74 repos, so its cap was cut 16 → 9: zero for most, heavy for a few.

파일 크기File size채점 04scored 04

평균 줄 수 + 대형 파일 비중. 보조 항으로 강등(27→8) — 같은 코드를 6파일로 쪼개기만 해도 옛 공식은 +27점을 줬다. 함수 길이와 상관 +0.16이라 버리진 않았다.Average lines + oversized-file share, demoted to a minor term (27 → 8): splitting identical code into six files used to gain +27. Kept, because it correlates only +0.16 with function length.

성능 7performance · 7 정확성 버그 9correctness · 9 타입 위생 4type safety · 4 위생 5hygiene · 5
순환 의존
import cycle

서로를 import 해 한 덩어리가 된 모듈. 따로 읽지도 테스트하지도 교체하지도 못한다. 소스 기준이며 import type 은 세지 않는다.Modules that import each other, so none can be read, tested, or replaced alone. Type-only imports are not counted.

루프 안 파일읽기
uncached read in loop

캐시 없는 리더를 루프에서 호출 — 호출 1번이 파일을 N번 읽는다.An uncached reader called inside a loop: one call, N file reads.

렌더 인질
render gate

fetch 하나를 기다리느라 그 데이터와 무관한 UI까지 못 그린다.One pending fetch blocks UI that does not depend on it.

루프 불변 인덱스
loop-invariant index

루프 밖 값으로 매 회 new Set/Map을 다시 만든다.Rebuilds a Set/Map from invariant data each pass.

스프레드 누적
spread accumulator

acc = [...acc, x] · acc.concat(x) · Object.assign({}, acc, …) — 매 회 전체 복사 = O(n²).acc = [...acc, x], acc.concat(x), Object.assign({}, acc, …) — copies everything each pass.

루프 안 정규식
regex in loop

루프마다 new RegExp() 재컴파일.Recompiles new RegExp() every iteration.

깊은 비교 집합 연산
deep-equal set op

uniqWith(arr, isEqual) 류 — 원시값 배열이면 Set 한 번으로 끝날 일을 깊은 비교로 이중 순회한다.uniqWith(arr, isEqual) and friends — a nested deep-equal scan where one Set pass would do for primitives.

floating promise
unawaited async

async 함수를 await 없이 호출하고 결과를 버린다.Calls an async fn without await, drops the result.

await in forEach
ignored promise

forEach는 콜백의 프라미스를 무시한다 — 안 기다린다.forEach ignores the callback promise — it never waits.

공유 참조 fill
shared-ref fill

Array(n).fill([]) — 한 참조를 모든 칸이 공유.Array(n).fill([]) shares one reference everywhere.

숫자 정렬
sort no comparator

숫자 배열을 비교자 없이 sort() → 사전순.Numeric sort() with no comparator sorts lexically.

전역 정규식 상태
stateful /g regex

/g 정규식 .test()의 lastIndex 누수.A /g regex .test() leaks lastIndex between calls.

빈 catch
empty catch

catch {} — 에러를 조용히 삼킨다.catch {} swallows the error silently.

배열에 for...in
for-in over array

인덱스가 문자열이고 상속 속성까지 돈다.Yields string keys and inherited props.

any 남용
any annotations

타입 주석 중 any 비율. 경계 밖에서 잦으면 타입이 사실상 꺼진 것.Share of annotations that are any — off-boundary means types are effectively off.

as any 단언
as any assertion

타입을 강제로 지운 자리. 컴파일러가 못 지켜준다.Erases the type on purpose; the compiler can no longer help.

non-null (!)
non-null assertion

"여기 null 아님"을 사람이 장담한 자리. 틀리면 런타임 크래시.A human vouching for non-null — wrong means a runtime crash.

@ts-ignore
ts-ignore / nocheck

타입 검사를 아예 끈 줄. 남으면 조용히 썩는다.Type checking switched off for that line.

쓰기만 하는 컬렉션
write-only collection

채우기만 하고 한 번도 읽지 않는 Map·Set. 소비하던 코드가 사라진 자리다 — knip 은 못 잡는다(export 가 아니고, .add 도 참조라 "쓰였다"로 보인다).A Map/Set that is only ever written, never read — the consumer is gone. knip misses it: not an export, and .add still counts as a reference.

데드코드
dead code (knip)

미사용 export·파일. 진단은 항상, 점수 반영은 --dead 옵트인(라이브러리 공개 API 오탐 때문).Unused exports and files. Always diagnosed; scored only with --dead (public APIs would false-positive).

등급 옆에, 고칠 줄을 같이 준다.

Next to the grade — the line to fix.

크기 지표가 원리상 못 보는 결함을 따로 짚는다. 점수엔 넣지 않는다 — 이건 채점이 아니라 작업 목록이다.

Defects a size metric can't see, listed separately. They never touch the score — this is a work list, not a grade.

$ npx fixearly --dir=src --mine

  O(n²) 배열 조회: 71곳 (PR후보 67곳 · backend 67 / frontend 0 / test 4)
  루프 안 선형 탐색 — Map/Set으로 O(n). 점수 미반영.

    [★backend] enrichedRows.find() — row/staticFormula.ts:114  (loop: rows)
    [★backend] baseUsers.find()    — field-handler/user.general.handler.ts:153
    [★backend] targetList.some()   — services/data-table.service.ts:1491

  ✓ 후보 목록 저장 → public/quadratic-candidates.json
실제 출력 — budibase·nocodb에서 찾은 결함(고쳐서 PR로 냄)real output — findings in budibase / nocodb, fixed and sent as PRs

그래서, 무엇부터 손대야 하나.

So — what do you touch first?

git 이력을 읽어 복잡도 × 변경빈도로 정렬한다. 제일 복잡한 파일이 아니라, 복잡한데 매주 만지는 파일이 답이다. 안 건드리는 파일은 놔두라고 말해준다.

Reads git history and ranks by complexity × churn. The answer isn't the most complex file — it's the complex one you touch every week. It also tells you what to leave alone.

$ npx fixearly --dir=src --hotspots

  ── 복잡 × 변경빈도 = 먼저 고칠 파일 ──
  maxCog churn   worst함수 · 파일
     148    28   handleTranscriptLine():395  qa-runner.claude-runner.ts
      88   110   processFileAsync():978      file/service/file.service.ts
      62   201   streamAgent():255           agent/agent.service.ts

  놔둘 것 (복잡하지만 안정 — 리팩터 ROI 낮음):
    cog 248 churn 3  expandExternalLinks()  chain-collector/external-links.ts
실제 출력 — 우리 백엔드에 직접 돌린 결과real output — run against our own backend

한 장으로 받는다. 그리고 AI에게 넘긴다.

One page. Then hand it to the AI.

--report는 HTML 한 장을 뽑는다 — 같은 체급 오픈소스 안에서 내 위치, 축별 좌표, 무엇부터 고칠지 파일·줄, 그리고 각 항목마다 코딩 에이전트에 그대로 붙여넣는 작업 지시문. 측정할 때마다 이력이 쌓여서 지난번 대비 변화도 같이 나온다. 외부 요청 0 — 파일 하나로 끝난다.

--report writes a single HTML page: where you sit inside your weight class, your position on each axis, what to fix with file and line, and a ready-to-paste work order for each item. Every run appends to a local history, so you also get the delta since last time. Zero external requests.

$ npx fixearly --dir=src --report

  등급: B (73점) — 함수 11,000개, cog15+ 293개, 중복 5.5%
  지난 측정(2026-07-20 09:00) 대비: C 69 → B 73 (+4점)
  ✓ 리포트 → fixearly-report.html

  ── 리포트 안에 ──
  어디쯤인가     헤비급 11개 중 6위 (체급 중앙 73점)
  무엇부터       processFileAsync() 354줄  file.service.ts:978 · churn 110회
                 [지시문] ← 눌러서 전문 확인 후 복사
  지난번 대비     긴 함수 661개 → 623개 (−38)
점수는 절대 위치, 변화량은 당신이 한 일이다the score is where you stand; the delta is what you did

유명 오픈소스 74개, 체급별로.

74 well-known projects, sorted by weight class.

한 가지 렌즈one lens

구조 지표만 잰다 — 설계·테스트·문서·보안·성능·커뮤니티, 그 소프트웨어가 준 가치는 재지 않는다. 오래 살아남아 기능을 많이 감당한 코드일수록 이 지표는 불리하다. 낮은 등급이 나쁜 프로젝트라는 뜻이 아니다.

Structural signals only — not design, tests, docs, security, performance, community, or the value the software delivered. Code that survived long enough to carry many features scores worse here by construction. A lower grade is not a worse project.

3천 줄 유틸과 20만 줄 백엔드를 같은 링에 세우면 큰 게 늘 진다. 그래서 코드줄로 체급을 나눈다(파일 수로 나누면 파일을 잘게 쪼갠 쪽이 체급만 올라간다). 체급이 크기를 지운다면 종류는 성격을 지운다 — 엔진·컴파일러 11개는 중앙 64점으로 툴체인(85)·라이브러리(85)·프레임워크(80)보다 구조적으로 낮고, 앱은 75점이다. 엔진은 성능·번들 크기 때문에 추상화를 포기하고, 앱은 화면 단위 함수가 길어지는 관습을 따른다 — 둘 다 이 축이 깎는다. 그래서 행을 열면 동종 기준선을 같이 보여준다.

Pit a 3k-line util against a 200k-line backend and the big one always loses — so we split by lines of code, not file count. Weight class cancels size; kind cancels temperament — the 11 engines and compilers sit at a median of 64 — below toolchains (85), libraries (85) and frameworks (80) — and apps land at 75. Engines trade abstraction for speed and bundle size; apps grow long screen-level functions. These axes penalise both. So every row shows its peer baseline.

스트로급Strawweight<5k · 10
1mittv3.0.1라이브러리library1파일f · 75줄L · 중복dup 0%SSS100→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 100 +15
6b41670 · 1 파일files · 75 코드줄LOC · ★11.9k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
0%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
12줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
1.5
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
7.8줄
중복duplication코퍼스 중앙 3.3%median 3.3%
0%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
75줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured src
2zustandv5.0.14라이브러리library13파일f · 1,208줄L · 중복dup 0%SS93→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 93 +8
beca84e · 13 파일files · 1,208 코드줄LOC · ★58.5k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
1.9%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
15줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
1.0%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
8.3
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
29.5줄
중복duplication코퍼스 중앙 3.3%median 3.3%
0%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
93줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured src
3expressv5.2.1라이브러리library6파일f · 1,137줄L · 중복dup 0%SS93→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 93 +8
ae6dd37 · 6 파일files · 1,137 코드줄LOC · ★69.2k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
0.9%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
23줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0.9%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
11.6
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
32.5줄
중복duplication코퍼스 중앙 3.3%median 3.3%
0%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
190줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured lib
4jotaiv2.20.2라이브러리library31파일f · 3,036줄L · 중복dup 1.8%S92→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 92 +7
86e74bd · 31 파일files · 3,036 코드줄LOC · ★21.2k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.2%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
21줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
2.2%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
15.3
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
48.9줄
중복duplication코퍼스 중앙 3.3%median 3.3%
1.8%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
98줄
채점 규칙이 바뀐 이력score across rulesets — v12 93 → v17 92
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured src
5socket.iov4.8.3라이브러리library10파일f · 2,484줄L · 중복dup 3%S92→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 92 +7
ae7fb46 · 10 파일files · 2,484 코드줄LOC · ★63k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
0.4%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
15줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0.4%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
9.3
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
31.7줄
중복duplication코퍼스 중앙 3.3%median 3.3%
3%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
248줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured packages/socket.io/lib
6immerv10.0.3-beta라이브러리library15파일f · 2,338줄L · 중복dup 0.8%A+89→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 89 +4
a3be9df · 15 파일files · 2,338 코드줄LOC · ★29.0k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.3%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
21줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
2.8%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
16.5
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
41.9줄
중복duplication코퍼스 중앙 3.3%median 3.3%
0.8%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
156줄
채점 규칙이 바뀐 이력score across rulesets — v12 91 → v17 89
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured src
7reduxv5.0.1라이브러리library17파일f · 853줄L · 중복dup 10.3%A85→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 85 +0
5d65348 · 17 파일files · 853 코드줄LOC
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
4.3%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
32줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
6.9
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
32.1줄
중복duplication코퍼스 중앙 3.3%median 3.3%
10.3%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
50줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured src
8solidv1.0.0엔진·컴파일러engine/compiler12파일f · 3,717줄L · 중복dup 8.7%A84→
동종 기준선peer baseline — 엔진·컴파일러engine/compiler 11개 중앙 median 64 · 이 저장소this repo 84 +20
d2f81d5 · 12 파일files · 3,717 코드줄LOC · ★33k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
1.3%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
16줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
4.3%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
30.8
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
47줄
중복duplication코퍼스 중앙 3.3%median 3.3%
8.7%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
310줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured packages/solid/src
9nanoidv6.0.0라이브러리library5파일f · 240줄L · 중복dup 18.1%A84→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 84 −1
b49a237 · 5 파일files · 240 코드줄LOC · ★26.9k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
0%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
19줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
2.5%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
7.2
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
13.8줄
중복duplication코퍼스 중앙 3.3%median 3.3%
18.1%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
48줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
10kyv2.0.2라이브러리library27파일f · 2,836줄L · 중복dup 0%B+77→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 77 −8
3419113 · 27 파일files · 2,836 코드줄LOC · ★17.0k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5.2%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
23줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
5.2%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
31.9
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
56줄
중복duplication코퍼스 중앙 3.3%median 3.3%
0%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
105줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured source
플라이급Flyweight5k–15k · 11
1execav10.0.0라이브러리library103파일f · 5,726줄L · 중복dup 0.7%SSS98→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 98 +13
499fe80 · 103 파일files · 5,726 코드줄LOC · ★7.6k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
1.2%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
16줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
9.3
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
53.4줄
중복duplication코퍼스 중앙 3.3%median 3.3%
0.7%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
56줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured lib
2rxjsv8.0.0-alpha.14라이브러리library188파일f · 6,536줄L · 중복dup 6.5%SS96→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 96 +11
c15b37f · 188 파일files · 6,536 코드줄LOC · ★32k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
0.4%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
12줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0.4%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
16.6
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
45줄
중복duplication코퍼스 중앙 3.3%median 3.3%
6.5%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
35줄
채점 규칙이 바뀐 이력score across rulesets — v12 99 → v17 96
진단 · 점수와 무관diagnostic · not scored — O(n²) 1
GitHub에서 보기View on GitHub↗측정 경로measured packages/rxjs/src
3trpcv11.18.0라이브러리library70파일f · 7,295줄L · 중복dup 2.2%SS93→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 93 +8
340811b · 70 파일files · 7,295 코드줄LOC · ★40.5k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.1%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
23줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0.6%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
15.2
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
66.4줄
중복duplication코퍼스 중앙 3.3%median 3.3%
2.2%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
104줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured packages/server/src
4mobxv6.16.1라이브러리library57파일f · 6,895줄L · 중복dup 2.4%S91→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 91 +6
f6c8d2c · 57 파일files · 6,895 코드줄LOC · ★28k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.4%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
21줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
2.5%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
25
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
55.1줄
중복duplication코퍼스 중앙 3.3%median 3.3%
2.4%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
121줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured packages/mobx/src
5axiosv1.19.0라이브러리library58파일f · 5,459줄L · 중복dup 0.4%A+88→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 88 +3
311fcc5 · 58 파일files · 5,459 코드줄LOC · ★109k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
1.9%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
21줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.7%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
55.6
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
120.6줄
중복duplication코퍼스 중앙 3.3%median 3.3%
0.4%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
94줄
채점 규칙이 바뀐 이력score across rulesets — v12 91 → v17 88
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured lib
6tanstack-queryv5.101.4라이브러리library24파일f · 5,685줄L · 중복dup 0.6%A+88→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 88 +3
a3b0612 · 24 파일files · 5,685 코드줄LOC · ★50.0k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.5%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
17줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
1.8%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
22.9
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
82줄
중복duplication코퍼스 중앙 3.3%median 3.3%
0.6%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
237줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured packages/query-core/src
7dayjsv1.11.21라이브러리library184파일f · 8,040줄L · 중복dup 16.7%A+88→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 88 +3
98364bc · 184 파일files · 8,040 코드줄LOC
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
1.1%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
13줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
1.9%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
35.1
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
42.9줄
중복duplication코퍼스 중앙 3.3%median 3.3%
16.7%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
44줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured src
8lodashv4.18.1라이브러리library3파일f · 6,026줄L · 중복dup 1%A85→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 85 +0
a666ba5 · 3 파일files · 6,026 코드줄LOC · ★61k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.5%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
15줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.3%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
31.7
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
121.7줄
중복duplication코퍼스 중앙 3.3%median 3.3%
1%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
2009줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured .
제외 — fp=자동생성 래퍼 · lib=빌드 스크립트 · dist=산출물
9fastifyv5.10.0라이브러리library31파일f · 5,336줄L · 중복dup 2.1%A81→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 81 −4
5454a66 · 31 파일files · 5,336 코드줄LOC · ★36.8k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
3.7%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
22줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
4.2%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
36.8
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
65.1줄
중복duplication코퍼스 중앙 3.3%median 3.3%
2.1%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
172줄
채점 규칙이 바뀐 이력score across rulesets — v12 83 → v17 81
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured lib
10react-hook-formv7.83.0라이브러리library80파일f · 6,053줄L · 중복dup 0.8%C55→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 55 −30
d349d08 · 80 파일files · 6,053 코드줄LOC · ★45k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
8.4%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
36줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
7.3%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
53.1
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
102줄
중복duplication코퍼스 중앙 3.3%median 3.3%
0.8%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
76줄
채점 규칙이 바뀐 이력score across rulesets — v12 57 → v17 55
진단 · 점수와 무관diagnostic · not scored — O(n²) 1
GitHub에서 보기View on GitHub↗측정 경로measured src
라이트급Lightweight15k–30k · 11
1cypressv15.19.0툴체인toolchain226파일f · 26,436줄L · 중복dup 1%SS93→
동종 기준선peer baseline — 툴체인toolchain 10개 중앙 median 86 · 이 저장소this repo 93 +7
0f0a8a1 · 226 파일files · 26,436 코드줄LOC · ★51k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
1.8%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
17줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0.6%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
26.6
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
149.1줄
중복duplication코퍼스 중앙 3.3%median 3.3%
1%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
117줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 4
GitHub에서 보기View on GitHub↗측정 경로measured packages/server/lib
2puppeteerv25.3.0툴체인toolchain173파일f · 29,808줄L · 중복dup 4.3%S91→
동종 기준선peer baseline — 툴체인toolchain 10개 중앙 median 86 · 이 저장소this repo 91 +5
06442ae · 173 파일files · 29,808 코드줄LOC · ★95k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.1%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
19줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0.8%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
26.8
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
115.6줄
중복duplication코퍼스 중앙 3.3%median 3.3%
4.3%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
172줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 3
GitHub에서 보기View on GitHub↗측정 경로measured packages/puppeteer-core/src
3nuxtv5.0.0-0프레임워크framework167파일f · 18,840줄L · 중복dup 3.8%A84→
동종 기준선peer baseline — 프레임워크framework 9개 중앙 median 80 · 이 저장소this repo 84 +4
2740086 · 167 파일files · 18,840 코드줄LOC · ★60.7k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.6%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
19줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.9%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
68.2
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
126.5줄
중복duplication코퍼스 중앙 3.3%median 3.3%
3.8%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
113줄
채점 규칙이 바뀐 이력score across rulesets — v12 83 → v17 84
진단 · 점수와 무관diagnostic · not scored — O(n²) 19
GitHub에서 보기View on GitHub↗측정 경로measured packages/nuxt/src
4n8nv2.32.0앱app141파일f · 15,755줄L · 중복dup 1.9%B+78→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 78 +3
1dc67b2a · 141 파일files · 15,755 코드줄LOC · ★198k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5.2%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
26줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.7%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
93.3
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
210.8줄
중복duplication코퍼스 중앙 3.3%median 3.3%
1.9%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
112줄
채점 규칙이 바뀐 이력score across rulesets — v12 76 → v17 78
진단 · 점수와 무관diagnostic · not scored — O(n²) 4
GitHub에서 보기View on GitHub↗측정 경로measured packages/core
5react-routerv8.3.0라이브러리library68파일f · 21,543줄L · 중복dup 4.1%B+77→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 77 −8
8bc59bc7 · 68 파일files · 21,543 코드줄LOC
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5.5%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
30줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.3%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
41.5
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
178줄
중복duplication코퍼스 중앙 3.3%median 3.3%
4.1%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
317줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 7
GitHub에서 보기View on GitHub↗측정 경로measured packages/react-router/lib
6honov4.12.32라이브러리library162파일f · 18,808줄L · 중복dup 23.2%B73→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 73 −12
26d8e42 · 162 파일files · 18,808 코드줄LOC · ★31.4k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
3.0%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
23줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
4.3%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
77.5
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
100.2줄
중복duplication코퍼스 중앙 3.3%median 3.3%
23.2%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
116줄
채점 규칙이 바뀐 이력score across rulesets — v12 75 → v17 73
진단 · 점수와 무관diagnostic · not scored — O(n²) 2
GitHub에서 보기View on GitHub↗측정 경로measured src
7zodv4.4.3라이브러리library98파일f · 24,382줄L · 중복dup 15.6%C+64→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 64 −21
912f0f5 · 98 파일files · 24,382 코드줄LOC · ★43.3k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
6.4%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
18줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
4.1%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
76.3
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
136.1줄
중복duplication코퍼스 중앙 3.3%median 3.3%
15.6%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
249줄
채점 규칙이 바뀐 이력score across rulesets — v12 69 → v17 64
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured packages/zod/src
8lexicalv0.48.0라이브러리library42파일f · 19,425줄L · 중복dup 1.3%C60→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 60 −25
82cdae1 · 42 파일files · 19,425 코드줄LOC · ★24k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
7.4%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
32줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
6.9%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
90.1
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
184.5줄
중복duplication코퍼스 중앙 3.3%median 3.3%
1.3%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
463줄
채점 규칙이 바뀐 이력score across rulesets — v12 53 → v17 60
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured packages/lexical/src
9valibotv1.4.2라이브러리library337파일f · 25,402줄L · 중복dup 43.5%C57→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 57 −28
769bb7c · 337 파일files · 25,402 코드줄LOC · ★8.8k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5.6%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
22줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
5.8%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
65.8
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
90.6줄
중복duplication코퍼스 중앙 3.3%median 3.3%
43.5%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
75줄
채점 규칙이 바뀐 이력score across rulesets — v12 62 → v17 57
진단 · 점수와 무관diagnostic · not scored — O(n²) 0
GitHub에서 보기View on GitHub↗측정 경로measured library/src
10tailwindv1.0.0엔진·컴파일러engine/compiler64파일f · 19,694줄L · 중복dup 3.3%C56→
동종 기준선peer baseline — 엔진·컴파일러engine/compiler 11개 중앙 median 64 · 이 저장소this repo 56 −8
094bf62 · 64 파일files · 19,694 코드줄LOC
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5.5%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
27줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
7.2%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
127.7
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
332줄
중복duplication코퍼스 중앙 3.3%median 3.3%
3.3%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
308줄
채점 규칙이 바뀐 이력score across rulesets — v12 57 → v17 56
진단 · 점수와 무관diagnostic · not scored — O(n²) 2
GitHub에서 보기View on GitHub↗측정 경로measured packages/tailwindcss/src
11mongoosev9.8.0라이브러리library250파일f · 28,743줄L · 중복dup 5.7%D+49→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 49 −36
c0a75c2 · 250 파일files · 28,743 코드줄LOC
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
6.1%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
29줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
8.9%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
161.7
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
197.6줄
중복duplication코퍼스 중앙 3.3%median 3.3%
5.7%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
115줄
채점 규칙이 바뀐 이력score across rulesets — v12 50 → v17 49
진단 · 점수와 무관diagnostic · not scored — O(n²) 6
GitHub에서 보기View on GitHub↗측정 경로measured lib
웰터급Welterweight30k–60k · 15
1playwrightv1.63.0-next툴체인toolchain302파일f · 55,968줄L · 중복dup 6%SS93→
동종 기준선peer baseline — 툴체인toolchain 10개 중앙 median 86 · 이 저장소this repo 93 +7
dea59db · 302 파일files · 55,968 코드줄LOC · ★93.3k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
1.1%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
13줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
1.0%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
58.7
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
123.5줄
중복duplication코퍼스 중앙 3.3%median 3.3%
6%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
185줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 5
GitHub에서 보기View on GitHub↗측정 경로measured packages/playwright-core/src
2nestjsv11.1.26프레임워크framework483파일f · 31,726줄L · 중복dup 7.3%SS93→
동종 기준선peer baseline — 프레임워크framework 9개 중앙 median 80 · 이 저장소this repo 93 +13
d8ee014 · 483 파일files · 31,726 코드줄LOC · ★76.2k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
1.2%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
18줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0.3%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
20.6
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
62.8줄
중복duplication코퍼스 중앙 3.3%median 3.3%
7.3%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
66줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 4
GitHub에서 보기View on GitHub↗측정 경로measured packages
3discordjsv14.16.3라이브러리library695파일f · 37,164줄L · 중복dup 6.3%A+88→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 88 +3
219ad7ba · 695 파일files · 37,164 코드줄LOC
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
1.6%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
14줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
1.4%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
55.6
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
131.1줄
중복duplication코퍼스 중앙 3.3%median 3.3%
6.3%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
53줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 1
GitHub에서 보기View on GitHub↗측정 경로measured packages
제외 — api-extractor=Microsoft 툴 포크(벤더) · docgen=문서 생성 툴
4rollupv4.62.2엔진·컴파일러engine/compiler254파일f · 30,603줄L · 중복dup 4.9%A85→
동종 기준선peer baseline — 엔진·컴파일러engine/compiler 11개 중앙 median 64 · 이 저장소this repo 85 +21
a65f21c · 254 파일files · 30,603 코드줄LOC
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
3.9%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
24줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.2%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
49.1
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
114.6줄
중복duplication코퍼스 중앙 3.3%median 3.3%
4.9%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
120줄
채점 규칙이 바뀐 이력score across rulesets — v12 87 → v17 85
진단 · 점수와 무관diagnostic · not scored — O(n²) 3
GitHub에서 보기View on GitHub↗측정 경로measured src
5vitestv5.0.0-beta.7툴체인toolchain235파일f · 36,107줄L · 중복dup 1.6%A84→
동종 기준선peer baseline — 툴체인toolchain 10개 중앙 median 86 · 이 저장소this repo 84 −2
b7be73190 · 235 파일files · 36,107 코드줄LOC · ★16.9k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
3.1%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
22줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
2.1%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
63
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
162줄
중복duplication코퍼스 중앙 3.3%median 3.3%
1.6%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
154줄
채점 규칙이 바뀐 이력score across rulesets — v12 85 → v17 84
진단 · 점수와 무관diagnostic · not scored — O(n²) 13
GitHub에서 보기View on GitHub↗측정 경로measured packages/vitest/src
6jestv30.4.2툴체인toolchain377파일f · 47,765줄L · 중복dup 2.6%A84→
동종 기준선peer baseline — 툴체인toolchain 10개 중앙 median 86 · 이 저장소this repo 84 −2
f49721c7 · 377 파일files · 47,765 코드줄LOC
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5.0%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
27줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
2.7%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
63.6
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
191.1줄
중복duplication코퍼스 중앙 3.3%median 3.3%
2.6%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
127줄
채점 규칙이 바뀐 이력score across rulesets — v12 85 → v17 84
진단 · 점수와 무관diagnostic · not scored — O(n²) 5
GitHub에서 보기View on GitHub↗측정 경로measured packages
7immichv3.0.3앱app423파일f · 48,818줄L · 중복dup 2.8%A84→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 84 +9
5fa920a · 423 파일files · 48,818 코드줄LOC · ★109k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.3%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
18줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0.8%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
32.1
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
269.9줄
중복duplication코퍼스 중앙 3.3%median 3.3%
2.8%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
115줄
채점 규칙이 바뀐 이력score across rulesets — v12 83 → v17 84
진단 · 점수와 무관diagnostic · not scored — O(n²) 13
GitHub에서 보기View on GitHub↗측정 경로measured server/src
8drizzle-ormv0.45.3라이브러리library400파일f · 45,778줄L · 중복dup 36.2%A82→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 82 −3
b786252 · 400 파일files · 45,778 코드줄LOC · ★35k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.2%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
18줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
1.9%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
71.3
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
188.8줄
중복duplication코퍼스 중앙 3.3%median 3.3%
36.2%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
114줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 5
GitHub에서 보기View on GitHub↗측정 경로measured drizzle-orm/src
9astrov7.1.3프레임워크framework550파일f · 55,287줄L · 중복dup 2.9%A80→
동종 기준선peer baseline — 프레임워크framework 9개 중앙 median 80 · 이 저장소this repo 80 +0
b01a692 · 550 파일files · 55,287 코드줄LOC · ★61.3k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5.1%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
26줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
2.8%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
92.5
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
203.4줄
중복duplication코퍼스 중앙 3.3%median 3.3%
2.9%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
101줄
채점 규칙이 바뀐 이력score across rulesets — v12 81 → v17 80
진단 · 점수와 무관diagnostic · not scored — O(n²) 24
GitHub에서 보기View on GitHub↗측정 경로measured packages/astro/src
10medusav2.18.0앱app687파일f · 37,471줄L · 중복dup 18.4%B+77→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 77 +2
f440743c · 687 파일files · 37,471 코드줄LOC · ★35.3k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5.1%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
32줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0.5%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
16.3
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
79.3줄
중복duplication코퍼스 중앙 3.3%median 3.3%
18.4%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
55줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 5
GitHub에서 보기View on GitHub↗측정 경로measured packages/medusa/src
11prettierv3.10.0-dev툴체인toolchain472파일f · 36,692줄L · 중복dup 2.6%B74→
동종 기준선peer baseline — 툴체인toolchain 10개 중앙 median 86 · 이 저장소this repo 74 −12
4f84a93 · 472 파일files · 36,692 코드줄LOC · ★52.1k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
4.6%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
26줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.8%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
143.8
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
342.8줄
중복duplication코퍼스 중앙 3.3%median 3.3%
2.6%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
78줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 4
GitHub에서 보기View on GitHub↗측정 경로measured src
12vitev8.2.0-beta.0엔진·컴파일러engine/compiler132파일f · 36,996줄L · 중복dup 0.5%C+64→
동종 기준선peer baseline — 엔진·컴파일러engine/compiler 11개 중앙 median 64 · 이 저장소this repo 64 +0
3ac77d9dd · 132 파일files · 36,996 코드줄LOC · ★82.0k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
6.2%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
29줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
4.5%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
90.1
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
230.4줄
중복duplication코퍼스 중앙 3.3%median 3.3%
0.5%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
280줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 12
GitHub에서 보기View on GitHub↗측정 경로measured packages/vite/src
13sveltev5.56.7엔진·컴파일러engine/compiler343파일f · 41,395줄L · 중복dup 2.8%C61→
동종 기준선peer baseline — 엔진·컴파일러engine/compiler 11개 중앙 median 64 · 이 저장소this repo 61 −3
3dde011 · 343 파일files · 41,395 코드줄LOC · ★87.7k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
4.4%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
22줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
5.4%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
180
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
318.8줄
중복duplication코퍼스 중앙 3.3%median 3.3%
2.8%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
121줄
채점 규칙이 바뀐 이력score across rulesets — v12 65 → v17 61
진단 · 점수와 무관diagnostic · not scored — O(n²) 13
GitHub에서 보기View on GitHub↗측정 경로measured packages/svelte/src
14vuev3.5.40엔진·컴파일러engine/compiler241파일f · 45,412줄L · 중복dup 1.1%D45→
동종 기준선peer baseline — 엔진·컴파일러engine/compiler 11개 중앙 median 64 · 이 저장소this repo 45 −19
b5f8518 · 241 파일files · 45,412 코드줄LOC · ★54.0k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
8.1%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
34줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
9.0%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
152.3
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
277.5줄
중복duplication코퍼스 중앙 3.3%median 3.3%
1.1%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
188줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 4
GitHub에서 보기View on GitHub↗측정 경로measured packages
15payloadv4.0.0-canary.14앱app582파일f · 51,111줄L · 중복dup 5.5%D44→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 44 −31
8bbdb68 · 582 파일files · 51,111 코드줄LOC · ★43.8k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
15.5%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
51줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
9.4%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
178.1
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
367.9줄
중복duplication코퍼스 중앙 3.3%median 3.3%
5.5%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
88줄
채점 규칙이 바뀐 이력score across rulesets — v12 36 → v17 44
진단 · 점수와 무관diagnostic · not scored — O(n²) 42
GitHub에서 보기View on GitHub↗측정 경로measured packages/payload/src
헤비급Heavyweight120k+ · 10
1angularv22.2.0-next.0엔진·컴파일러engine/compiler1,852파일f · 232,503줄L · 중복dup 4.2%A81→
동종 기준선peer baseline — 엔진·컴파일러engine/compiler 11개 중앙 median 64 · 이 저장소this repo 81 +17
e779309 · 1,852 파일files · 232,503 코드줄LOC · ★101k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
3.5%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
23줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
2.5%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
102.8
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
297.4줄
중복duplication코퍼스 중앙 3.3%median 3.3%
4.2%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
126줄
채점 규칙이 바뀐 이력score across rulesets — v12 85 → v17 81
진단 · 점수와 무관diagnostic · not scored — O(n²) 41
GitHub에서 보기View on GitHub↗측정 경로measured packages
2strapiv5.51.0앱app2,116파일f · 199,719줄L · 중복dup 7.4%B+78→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 78 +3
e904c0c3b · 2,116 파일files · 199,719 코드줄LOC · ★72.7k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
3.5%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
24줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
1.3%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
97.1
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
297줄
중복duplication코퍼스 중앙 3.3%median 3.3%
7.4%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
94줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 65
GitHub에서 보기View on GitHub↗측정 경로measured packages/core
3nodev27.0.0라이브러리library375파일f · 126,425줄L · 중복dup 4.6%B+77→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 77 −8
4a5eb1cf · 375 파일files · 126,425 코드줄LOC · ★118k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
4.0%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
24줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.7%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
148.8
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
217.5줄
중복duplication코퍼스 중앙 3.3%median 3.3%
4.6%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
337줄
채점 규칙이 바뀐 이력score across rulesets — v12 76 → v17 77
진단 · 점수와 무관diagnostic · not scored — O(n²) 1
GitHub에서 보기View on GitHub↗측정 경로measured lib
4vscodev1.131.0앱app5,203파일f · 1,265,707줄L · 중복dup 5.8%B75→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 75 +0
c3707c7b · 5,203 파일files · 1,265,707 코드줄LOC · ★188k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.4%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
19줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
2.2%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
181.7
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
515.8줄
중복duplication코퍼스 중앙 3.3%median 3.3%
5.8%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
243줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 517
GitHub에서 보기View on GitHub↗측정 경로measured src/vs
5formbricksv5.2.1앱app1,642파일f · 186,218줄L · 중복dup 8.1%B75→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 75 +0
b5a12fb · 1,642 파일files · 186,218 코드줄LOC · ★13k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
6.0%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
35줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
0.9%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
62.2
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
353.4줄
중복duplication코퍼스 중앙 3.3%median 3.3%
8.1%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
113줄
채점 규칙이 바뀐 이력score across rulesets — v12 72 → v17 75
진단 · 점수와 무관diagnostic · not scored — O(n²) 78
GitHub에서 보기View on GitHub↗측정 경로measured apps/web
6typescriptv6.0.0엔진·컴파일러engine/compiler528파일f · 301,414줄L · 중복dup 5.6%B71→
동종 기준선peer baseline — 엔진·컴파일러engine/compiler 11개 중앙 median 64 · 이 저장소this repo 71 +7
cc5c6e2d3 · 528 파일files · 301,414 코드줄LOC · ★110k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
4.1%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
24줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
4.0%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
340.4
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
657.1줄
중복duplication코퍼스 중앙 3.3%median 3.3%
5.6%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
571줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 36
GitHub에서 보기View on GitHub↗측정 경로measured src
7next.jsv16.3.0-canary.95프레임워크framework1,321파일f · 197,522줄L · 중복dup 4%C61→
동종 기준선peer baseline — 프레임워크framework 9개 중앙 median 80 · 이 저장소this repo 61 −19
2a25442b · 1,321 파일files · 197,522 코드줄LOC · ★141k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
7.6%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
36줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
4.7%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
400.6
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
1050.6줄
중복duplication코퍼스 중앙 3.3%median 3.3%
4%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
150줄
채점 규칙이 바뀐 이력score across rulesets — v12 62 → v17 61
진단 · 점수와 무관diagnostic · not scored — O(n²) 38
GitHub에서 보기View on GitHub↗측정 경로measured packages/next/src
8webpackv5.109.0엔진·컴파일러engine/compiler629파일f · 126,159줄L · 중복dup 4.5%D+54→
동종 기준선peer baseline — 엔진·컴파일러engine/compiler 11개 중앙 median 64 · 이 저장소this repo 54 −10
db98306 · 629 파일files · 126,159 코드줄LOC
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5.9%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
28줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
5.2%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
221.3
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
462줄
중복duplication코퍼스 중앙 3.3%median 3.3%
4.5%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
201줄
채점 규칙이 바뀐 이력score across rulesets — v12 63 → v17 54
진단 · 점수와 무관diagnostic · not scored — O(n²) 8
GitHub에서 보기View on GitHub↗측정 경로measured lib
9nocodbv0.301.3앱app1,129파일f · 214,550줄L · 중복dup 11.9%D+52→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 52 −23
f782a6a · 1,129 파일files · 214,550 코드줄LOC · ★64k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
8.0%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
34줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.9%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
366.1
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
913.4줄
중복duplication코퍼스 중앙 3.3%median 3.3%
11.9%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
190줄
채점 규칙이 바뀐 이력score across rulesets — v12 49 → v17 52
진단 · 점수와 무관diagnostic · not scored — O(n²) 142
GitHub에서 보기View on GitHub↗측정 경로measured packages/nocodb/src
10reactv19.3.0엔진·컴파일러engine/compiler637파일f · 123,473줄L · 중복dup 18.8%D45→
동종 기준선peer baseline — 엔진·컴파일러engine/compiler 11개 중앙 median 64 · 이 저장소this repo 45 −19
b685b40d · 637 파일files · 123,473 코드줄LOC
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
10.1%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
41줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
9%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
201.8
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
453.1줄
중복duplication코퍼스 중앙 3.3%median 3.3%
18.8%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
194줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 1
GitHub에서 보기View on GitHub↗측정 경로measured packages
제외 — devtools=별도 브라우저확장 제품 · eslint-plugin=별도 lint 패키지 · noop/jest-react/test-utils=테스트 인프라
미들급Middleweight60k–120k · 13
1adonisjsv7.3.5프레임워크framework19파일f · 1,228줄L · 중복dup 5.3%SS93→
동종 기준선peer baseline — 프레임워크framework 9개 중앙 median 83 · 이 저장소this repo 93 +10
595c486 · 19 파일files · 1,228 코드줄LOC · ★19.1k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.4%
함수 길이 p90fn length p90코퍼스 중앙 24줄corpus median 24
15줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%corpus median 3%
0.8%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5corpus median 69.5
8.2
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄corpus median 189
34.1줄
중복duplication코퍼스 중앙 3.3%corpus median 3.3%
5.3%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
65줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 2
GitHub에서 보기View on GitHub↗측정 경로measured src
2remixv3.0.0-beta.5프레임워크framework402파일f · 67,509줄L · 중복dup 6.3%A+89→
동종 기준선peer baseline — 프레임워크framework 9개 중앙 median 83 · 이 저장소this repo 89 +6
593e568f1 · 402 파일files · 67,509 코드줄LOC · ★8k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
3.2%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
23줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
2.0%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
74.5
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
170.9줄
중복duplication코퍼스 중앙 3.3%median 3.3%
6.3%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
168줄
채점 규칙이 바뀐 이력score across rulesets — v12 89 → v17 87
진단 · 점수와 무관diagnostic · not scored — O(n²) 19
GitHub에서 보기View on GitHub↗측정 경로measured packages
3storybookv10.6.0-alpha.3툴체인toolchain922파일f · 116,731줄L · 중복dup 2.9%A+87→
동종 기준선peer baseline — 툴체인toolchain 10개 중앙 median 85 · 이 저장소this repo 87 +2
6b378f9 · 922 파일files · 116,731 코드줄LOC · ★90.7k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.9%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
22줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
1.2%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
47.8
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
266.8줄
중복duplication코퍼스 중앙 3.3%median 3.3%
2.9%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
127줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 32
GitHub에서 보기View on GitHub↗측정 경로measured code/core/src
4qwikv2.0.0-beta.38프레임워크framework286파일f · 49,261줄L · 중복dup 7.6%A+87→
동종 기준선peer baseline — 프레임워크framework 9개 중앙 median 83 · 이 저장소this repo 87 +4
d7272db · 286 파일files · 49,261 코드줄LOC · ★22k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
2.4%
함수 길이 p90fn length p90코퍼스 중앙 24줄corpus median 24
22줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%corpus median 3%
2.3%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5corpus median 69.5
122.4
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄corpus median 189
191.9줄
중복duplication코퍼스 중앙 3.3%corpus median 3.3%
7.6%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
172줄
채점 규칙이 바뀐 이력score across rulesets — v12 87 → v17 71
진단 · 점수와 무관diagnostic · not scored — O(n²) 4
GitHub에서 보기View on GitHub↗측정 경로measured packages/qwik/src
5eslintv10.7.0툴체인toolchain381파일f · 62,999줄L · 중복dup 5.3%A83→
동종 기준선peer baseline — 툴체인toolchain 10개 중앙 median 85 · 이 저장소this repo 83 −2
6ddf858 · 381 파일files · 62,999 코드줄LOC · ★27.4k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
4.8%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
27줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.0%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
75.5
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
208.8줄
중복duplication코퍼스 중앙 3.3%median 3.3%
5.3%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
165줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 7
GitHub에서 보기View on GitHub↗측정 경로measured lib
6echartsv6.1.0라이브러리library533파일f · 90,980줄L · 중복dup 1.9%A80→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 80 −5
e647e77 · 533 파일files · 90,980 코드줄LOC · ★67k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5.3%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
29줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.5%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
66.7
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
148.6줄
중복duplication코퍼스 중앙 3.3%median 3.3%
1.9%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
171줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 1
GitHub에서 보기View on GitHub↗측정 경로measured src
7sveltekitv3.0.0-next.13프레임워크framework156파일f · 23,139줄L · 중복dup 1.7%B+79→
동종 기준선peer baseline — 프레임워크framework 9개 중앙 median 83 · 이 저장소this repo 79 −4
d8617b3 · 156 파일files · 23,139 코드줄LOC · ★20.7k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
4.4%
함수 길이 p90fn length p90코퍼스 중앙 24줄corpus median 24
22줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%corpus median 3%
4%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5corpus median 69.5
111.1
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄corpus median 189
215.1줄
중복duplication코퍼스 중앙 3.3%corpus median 3.3%
1.7%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
148줄
채점 규칙이 바뀐 이력score across rulesets — v12 79 → v17 80
진단 · 점수와 무관diagnostic · not scored — O(n²) 6
GitHub에서 보기View on GitHub↗측정 경로measured packages/kit/src
8outlinev1.9.1앱app790파일f · 63,684줄L · 중복dup 9.1%B+77→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 77 +2
e275560 · 790 파일files · 63,684 코드줄LOC · ★39.8k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
6.4%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
33줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
1.3%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
45.6
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
236.1줄
중복duplication코퍼스 중앙 3.3%median 3.3%
9.1%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
81줄
채점 규칙이 바뀐 이력score across rulesets — v12 77 → v17 78
진단 · 점수와 무관diagnostic · not scored — O(n²) 3
GitHub에서 보기View on GitHub↗측정 경로measured server
9ghostv6.54.0-rc.0앱app1,457파일f · 101,001줄L · 중복dup 9.4%B+77→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 77 +2
ee07678 · 1,457 파일files · 101,001 코드줄LOC · ★55k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
3.2%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
22줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
1.7%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
75.9
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
233.7줄
중복duplication코퍼스 중앙 3.3%median 3.3%
9.4%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
69줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 51
GitHub에서 보기View on GitHub↗측정 경로measured ghost/core/core
10threev0.185.0라이브러리library745파일f · 74,020줄L · 중복dup 11.5%B+76→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 76 −9
1bc2577 · 745 파일files · 74,020 코드줄LOC
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
4.0%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
22줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.9%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
206.1
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
220.1줄
중복duplication코퍼스 중앙 3.3%median 3.3%
11.5%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
99줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 2
GitHub에서 보기View on GitHub↗측정 경로measured src
11excalidrawv0.18.0앱app332파일f · 66,794줄L · 중복dup 2.8%B74→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 74 −1
f179f7f · 332 파일files · 66,794 코드줄LOC · ★128k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5.2%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
33줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
2.9%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
139.2
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
445.4줄
중복duplication코퍼스 중앙 3.3%median 3.3%
2.8%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
201줄
채점 규칙이 바뀐 이력score across rulesets — v12 74 → v17 73
진단 · 점수와 무관diagnostic · not scored — O(n²) 7
GitHub에서 보기View on GitHub↗측정 경로measured packages/excalidraw
12pnpmv11.17.0툴체인toolchain788파일f · 82,821줄L · 중복dup 1.1%C+69→
동종 기준선peer baseline — 툴체인toolchain 10개 중앙 median 85 · 이 저장소this repo 69 −16
f892e3d · 788 파일files · 82,821 코드줄LOC · ★36k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
6.5%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
31줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
4.4%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
112.3
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
329.7줄
중복duplication코퍼스 중앙 3.3%median 3.3%
1.1%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
105줄
채점 규칙이 바뀐 이력score across rulesets — v12 69 → v17 93
진단 · 점수와 무관diagnostic · not scored — O(n²) 17
GitHub에서 보기View on GitHub↗측정 경로measured pnpm11
13babelv8.0.4엔진·컴파일러engine/compiler643파일f · 80,190줄L · 중복dup 1.9%C+68→
동종 기준선peer baseline — 엔진·컴파일러engine/compiler 11개 중앙 median 65 · 이 저장소this repo 68 +3
e74e391f · 643 파일files · 80,190 코드줄LOC
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
6.0%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
30줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
5.1%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
126.7
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
272줄
중복duplication코퍼스 중앙 3.3%median 3.3%
1.9%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
125줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 6
GitHub에서 보기View on GitHub↗측정 경로measured packages
14budibasev3.40.1앱app531파일f · 77,201줄L · 중복dup 6%C+68→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 68 −7
d6b1b0d · 531 파일files · 77,201 코드줄LOC · ★28k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
6.2%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
31줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
2.9%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
76.5
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
295.8줄
중복duplication코퍼스 중앙 3.3%median 3.3%
6%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
145줄
진단 · 점수와 무관diagnostic · not scored — O(n²) 70
GitHub에서 보기View on GitHub↗측정 경로measured packages/server/src
15nxv23.1.0툴체인toolchain596파일f · 93,633줄L · 중복dup 3.8%C+64→
동종 기준선peer baseline — 툴체인toolchain 10개 중앙 median 85 · 이 저장소this repo 64 −21
9c735d4 · 596 파일files · 93,633 코드줄LOC · ★29k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
6.9%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
33줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
3.8%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
200.8
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
368.9줄
중복duplication코퍼스 중앙 3.3%median 3.3%
3.8%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
157줄
채점 규칙이 바뀐 이력score across rulesets — v12 64 → v17 65
진단 · 점수와 무관diagnostic · not scored — O(n²) 38
GitHub에서 보기View on GitHub↗측정 경로measured packages/nx/src
16directusv12.1.1앱app747파일f · 61,522줄L · 중복dup 12.4%C61→
동종 기준선peer baseline — 앱app 13개 중앙 median 75 · 이 저장소this repo 61 −14
7b0edea54 · 747 파일files · 61,522 코드줄LOC · ★36.9k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5.6%
함수 길이 p90fn length p90코퍼스 중앙 24줄median 24
28줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%median 3%
4.1%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5median 69.5
92.5
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄median 189
256.7줄
중복duplication코퍼스 중앙 3.3%median 3.3%
12.4%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
82줄
채점 규칙이 바뀐 이력score across rulesets — v12 61 → v17 63
진단 · 점수와 무관diagnostic · not scored — O(n²) 64
GitHub에서 보기View on GitHub↗측정 경로measured api/src
17typeormv1.1.0라이브러리library438파일f · 74,814줄L · 중복dup 24.3%C61→
동종 기준선peer baseline — 라이브러리library 31개 중앙 median 85 · 이 저장소this repo 61 −24
04ff4da · 438 파일files · 74,814 코드줄LOC · ★36.6k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
5%
함수 길이 p90fn length p90코퍼스 중앙 24줄corpus median 24
25줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%corpus median 3%
2.4%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5corpus median 69.5
87.8
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄corpus median 189
386.7줄
중복duplication코퍼스 중앙 3.3%corpus median 3.3%
24.3%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
171줄
채점 규칙이 바뀐 이력score across rulesets — v12 61 → v17 60
진단 · 점수와 무관diagnostic · not scored — O(n²) 251
GitHub에서 보기View on GitHub↗측정 경로measured src
18elysiav1.4.29프레임워크framework37파일f · 20,623줄L · 중복dup 15.2%E+27→
동종 기준선peer baseline — 프레임워크framework 9개 중앙 median 83 · 이 저장소this repo 27 −56
89088df · 37 파일files · 20,623 코드줄LOC · ★18.8k
긴 함수 비율long-fn share40줄+ (JSX 60줄+) · 코퍼스 중앙 4%over 40 lines · median 4%
8.7%
함수 길이 p90fn length p90코퍼스 중앙 24줄corpus median 24
35줄
복잡 함수 비율complex-fn share코퍼스 중앙 3%corpus median 3%
8.3%
복잡도 상위10 평균top-10 complexity코퍼스 중앙 69.5corpus median 69.5
188.4
함수 길이 상위10 평균top-10 fn length코퍼스 중앙 189줄corpus median 189
327줄
중복duplication코퍼스 중앙 3.3%corpus median 3.3%
15.2%
평균 파일 줄avg file lines보조 항 · 코퍼스 중앙 125줄minor · median 125
557줄
채점 규칙이 바뀐 이력score across rulesets — v12 27 → v17 28
진단 · 점수와 무관diagnostic · not scored — O(n²) 1
GitHub에서 보기View on GitHub↗측정 경로measured src
등급은 이렇게 나뉜다How the grades split 유명 OSS 74개 기준 · S는 S/SS/SSS 3단(93·97점), 나머지는 상위 40%에 +across 70 OSS repos · S splits into S/SS/SSS at 93 and 97; other bands mark their top 40% with +
16개 · 23%S90–100점
21개 · 30%A80–89점
15개 · 21%B70–79점
11개 · 16%C55–69점
6개 · 9%D35–54점
1개 · 1%E0–34점

90 / 80 / 70 / 55 / 35 — 벌점은 유예 구간을 넘은 뒤에만 붙는다. 파일 260줄·복잡함수 3.1%까지는 무료 — 정상 코드의 90%가 해당된다.

90 / 80 / 70 / 55 / 35 — penalties only start past a grace band: 260 lines per file, 3.1% complex functions. That covers 90% of normal files.

보드에 발행된 채점 판published rulesets

규칙이 다르면 점수를 나란히 놓을 수 없다. 아래는 무엇이 바뀌어서 점수가 움직였는지이지, 저장소가 좋아졌다·나빠졌다는 뜻이 아니다. 보드를 다시 발행한 판만 싣는다 — 발행 없이 지나간 판은 아무도 그 점수를 본 적이 없다. 현재 판은 v17다.

Scores from different rulesets are not comparable. This lists what changed in the ruler, not whether a project improved. Only rulesets the board was republished under are listed — the board is on v17.

v172026-10-11 · 74곳v14~v17 을 한 번에 재발행했다. JSX 를 .js 에서도 파싱하고, O(n²) 가 정렬 비교 함수 안을 보며, 손검증에서 나온 탐지기 오류 다섯 계열(for-of 헤더 식·Object.values(Enum) 바깥·조건 없는 재시도 for·트랜잭션 구간·.unit. 테스트 파일)을 뺐다. 함께 각 저장소를 브랜치 HEAD 로 다시 쟀으므로 상류 코드 변화도 섞여 있다(pnpm11 리팩터 69 → 93).
지난 판 1개 — v121 earlier rulesets — v12
v122026-07-31 · 74곳O(n²) 탐지에 멤버십 조회(includes/indexOf)를 넣었다 — 루프 안에서 배열을 훑는 가장 흔한 형태인데 빠져 있었다. 수신자가 배열이라는 증거가 있을 때만 센다. 재현율이 오르자 분포가 밀려 유예·기울기를 규칙대로(유예=중앙, 캡은 p90에서) 되돌릴 수 있게 됐다.

왜 이 점수는 다른가.

Why this score is different.

01

크기로 깔지 않는다

Doesn't punish size

체급으로 나눠 같은 덩치끼리 겨루게 한다.

Weight classes let each compete with its own.

02

감점 무게를 실제 버그로 정했다

Weights set by real bugs

감이 아니라 git 버그픽스 이력과의 상관으로 맞췄다. 측정해보니 파일 크기 > 인지 복잡도여서 — 직감과 반대라 — 그 순서로 재조정했다.

Set by correlation with real git bug-fix history. The data said file size > complexity — the opposite of our instinct — so we rebalanced.

03

이상치 하나론 못 흔든다

One outlier can't move it

제일 무서운 함수 하나만 고쳐도 점수가 튀던 것을 막았다. 이제 상위 10% 분포가 점수를 몬다.

Fixing the single scariest function used to swing the grade. Now the top-10% distribution drives it.

한 줄이면 끝난다.

It's one line.

$npx fixearly --dir=src