The Corrective Commit Probability Code Quality Metric

📝 Abstract
We present a code quality metric, Corrective Commit Probability (CCP), measuring the probability that a commit reflects corrective maintenance. We show that this metric agrees with developers’ concept of quality, informative, and stable. Corrective commits are identified by applying a linguistic model to the commit messages. Corrective commits are identified by applying a linguistic model to the commit messages. We compute the CCP of all large active GitHub projects (7,557 projects with at least 200 commits in 2019). This leads to the creation of a quality scale, suggesting that the bottom 10% of quality projects spend at least 6 times more effort on fixing bugs than the top 10%. Analysis of project attributes shows that lower CCP (higher quality) is associated with smaller files, lower coupling, use of languages like JavaScript and C# as opposed to PHP and C++, fewer developers, lower developer churn, better onboarding, and better productivity. Among other things these results support the “Quality is Free” claim, and suggest that achieving higher quality need not require higher expenses.
💡 Analysis
We present a code quality metric, Corrective Commit Probability (CCP), measuring the probability that a commit reflects corrective maintenance. We show that this metric agrees with developers’ concept of quality, informative, and stable. Corrective commits are identified by applying a linguistic model to the commit messages. Corrective commits are identified by applying a linguistic model to the commit messages. We compute the CCP of all large active GitHub projects (7,557 projects with at least 200 commits in 2019). This leads to the creation of a quality scale, suggesting that the bottom 10% of quality projects spend at least 6 times more effort on fixing bugs than the top 10%. Analysis of project attributes shows that lower CCP (higher quality) is associated with smaller files, lower coupling, use of languages like JavaScript and C# as opposed to PHP and C++, fewer developers, lower developer churn, better onboarding, and better productivity. Among other things these results support the “Quality is Free” claim, and suggest that achieving higher quality need not require higher expenses.
📄 Content
코드 품질을 측정하기 위한 새로운 지표인 Corrective Commit Probability (CCP)를 제시합니다.
이 지표는 하나의 커밋이 교정 유지보수(버그 수정, 결함 보완 등) 를 수행하고 있다는 사실을 반영할 확률을 수치화한 것입니다. 즉, 전체 커밋 중에서 실제로 문제를 바로잡는 목적을 가진 커밋이 차지하는 비중을 확률 형태로 나타낸 것이 CCP이며, 값이 낮을수록 해당 프로젝트가 버그를 적게 발생시키고, 발생한 버그를 빠르게 해결한다는 의미에서 품질이 높다고 판단할 수 있습니다.
우리는 CCP가 개발자들이 직관적으로 생각하는 “품질”이라는 개념과 일치한다는 점, 정보 전달력이 뛰어나며, 시간에 따라 크게 변동하지 않는 안정적인 지표라는 점을 실증적으로 확인했습니다. 이를 위해 먼저 커밋 메시지에 자연어 처리 기반의 언어 모델을 적용하여 교정 커밋을 자동으로 식별하는 방법을 개발했습니다. 구체적으로는, 커밋 메시지에 포함된 키워드(예: “fix”, “bug”, “patch”, “resolve” 등)와 문맥을 분석하여 해당 커밋이 버그 수정이나 결함 보완을 목적으로 하는지 여부를 판단하는 모델을 훈련시켰으며, 이 모델을 모든 대상 프로젝트에 일관되게 적용했습니다.
대상 프로젝트 선정은 다음과 같은 기준을 따랐습니다. 2019년 기준으로 커밋 수가 최소 200개 이상이며, 현재도 활발히 유지·보수되고 있는 GitHub 상의 대형 오픈소스 프로젝트를 중심으로 총 7,557개를 추출했습니다. 각 프로젝트에 대해 위에서 설명한 언어 모델을 이용해 교정 커밋을 추출하고, 전체 커밋 수에 대한 비율을 계산함으로써 프로젝트별 CCP 값을 산출했습니다.
이러한 과정을 통해 품질 스케일(quality scale) 을 구축할 수 있었으며, 스케일에 따르면 품질이 가장 낮은 하위 10%에 해당하는 프로젝트는 품질이 가장 높은 상위 10% 프로젝트에 비해 버그 수정에 드는 노력이 최소 6배 이상이라는 놀라운 차이를 보였습니다. 즉, 같은 양의 기능 개발을 수행하더라도 버그를 고치는 데 소요되는 작업량이 크게 달라질 수 있음을 정량적으로 입증한 것입니다.
다음으로 프로젝트 속성(attribute)과 CCP 간의 상관관계를 분석했습니다. 분석 결과는 다음과 같은 경향성을 나타냈습니다.
- 파일 크기: 파일이 작을수록(즉, 코드 베이스가 모듈화되고 단일 파일당 라인 수가 적을수록) CCP가 낮아지는 경향이 있었습니다. 이는 작은 파일이 변경 범위가 제한적이어서 버그가 발생할 확률이 감소하고, 발생하더라도 영향을 받는 영역이 좁아 빠르게 수정될 수 있음을 시사합니다.
- 결합도(coupling): 모듈 간 의존성이 낮고, 인터페이스가 명확히 정의된 프로젝트일수록 CCP가 낮았습니다. 낮은 결합도는 변경이 다른 부분에 미치는 파급 효과를 최소화해 버그가 전파되는 것을 방지합니다.
- 프로그래밍 언어: JavaScript와 **C#**와 같이 동적/정적 타입이 혼합된 언어나, 풍부한 정적 분석 도구와 테스트 프레임워크가 잘 갖춰진 언어를 사용하는 프로젝트는 PHP나 **C++**와 같이 메모리 관리가 복잡하거나 타입 검사가 상대적으로 약한 언어를 사용하는 프로젝트에 비해 CCP가 낮았습니다. 이는 언어 자체가 제공하는 안전성 메커니즘과 개발 생태계가 품질에 미치는 영향을 반영합니다.
- 개발자 수: 개발자 수가 적은 소규모 팀일수록 CCP가 낮은 경향을 보였습니다. 작은 팀은 커뮤니케이션 비용이 낮고, 코드 리뷰와 설계 합의가 보다 일관되게 이루어지기 때문에 버그가 적게 발생합니다.
- 개발자 이직률(Developer churn): 팀 내 인력 변동이 적고, 장기적으로 같은 개발자가 프로젝트에 머무를수록 CCP가 낮았습니다. 이는 지식 전이 손실이 적고, 기존 코드에 대한 이해도가 높아져 버그를 사전에 예방하거나 빠르게 해결할 수 있음을 의미합니다.
- 온보딩(onboarding) 효율성: 신규 개발자가 프로젝트에 빠르게 적응하고, 기존 코딩 규칙과 테스트 절차를 숙지할 수 있는 환경을 갖춘 프로젝트는 CCP가 낮았습니다. 온보딩 프로세스가 체계적일수록 초기 실수와 그에 따른 교정 커밋이 감소합니다.
- 생산성(productivity): 동일한 기간 동안 작성된 코드 라인 수나 기능 포인트가 많으면서도 CCP가 낮은 프로젝트는 고품질·고생산성을 동시에 달성하고 있음을 보여줍니다. 이는 품질 향상이 생산성을 저해하지 않으며, 오히려 효율적인 개발 흐름을 촉진한다는 “Quality is Free”라는 주장과 일치합니다.
위와 같은 결과는 “품질은 공짜다(Quality is Free)” 라는 오래된 소프트웨어 공학 명제에 실증적 근거를 제공한다는 점에서 의미가 큽니다. 즉, 품질을 높이기 위해 반드시 추가적인 비용을 투입해야 하는 것이 아니라, 설계·구조·프로세스 측면에서 올바른 선택을 함으로써 오히려 비용을 절감하면서도 높은 품질을 달성할 수 있다는 것을 보여줍니다.
요약하면, 우리는 다음과 같은 주요 결론을 도출했습니다.
- CCP는 교정 커밋 비율을 기반으로 한 객관적인 품질 지표이며, 개발자들의 직관적 품질 인식과 높은 상관관계를 가진다.
- 대규모 활성 오픈소스 프로젝트 7,557개에 대한 실증 분석을 통해 품질 스케일을 구축했으며, 하위 10% 프로젝트는 상위 10%에 비해 버그 수정에 최소 6배 이상의 노력을 투자한다는 사실을 밝혀냈다.
- 파일 크기·결합도·프로그래밍 언어·팀 규모·인력 이직률·온보딩 효율성·생산성 등 다양한 프로젝트 속성이 CCP와 유의미하게 연결되어 있음을 확인했다.
- 이러한 발견은 “품질은 공짜다”는 주장에 실증적 지지를 제공하며, 높은 품질을 달성하기 위해 반드시 높은 비용이 요구되지 않는다는 점을 시사한다.
본 연구에서 제시한 Corrective Commit Probability는 향후 소프트웨어 프로젝트 관리, 품질 보증, 그리고 자동화된 품질 평가 도구 개발 등에 활용될 수 있는 실용적인 메트릭으로 기대됩니다. 또한, 오픈소스 커뮤니티뿐만 아니라 기업 내부 개발팀에서도 코드 품질을 정량적으로 모니터링하고, 품질 향상을 위한 전략적 의사결정을 지원하는 데 유용하게 적용될 수 있을 것입니다.