코드큐엘(CodeQL) 풀 리퀘스트(PR) 분석, 이제 더 빨라졌습니다!

by DD
2개월 전
조회수 4

코드큐엘(CodeQL)의 풀 리퀘스트(Pull Request) 분석이 점진적으로(Incrementally) 수행되도록 변경됨

변경된 코드만 분석하여 분석 시간(Scan Time) 20% 단축을 달성한 데 이어, 캐싱된 데이터베이스(Cached Database) 결합으로 성능 향상

10만 개 이상의 저장소(Repository) 대상 분석 결과, 언어별로 최대 40% 속도 향상 확인

기본 쿼리 세트(Default Query Suite) 사용 시에만 적용되며, 코드큐엘(CodeQL) CLI는 추후 지원 예정

점진적 분석(Incremental Analysis)의 작동 원리

본문에 따르면 코드큐엘(CodeQL)은 풀 리퀘스트(Pull Request)에서 변경된 코드만을 분석하기 위해 새로운 코드에 대한 데이터베이스(Database)를 생성한다.

캐싱된 데이터베이스(Cached Database) 결합: 전체 코드베이스(Codebase)에 대한 기존 데이터베이스와 결합하여 분석 범위(Analysis Scope) 축소

빌드 모드(Build Mode) 활용: C#, Java, JavaScript/TypeScript, Python, Ruby 프로젝트에서 'none' 추출 메커니즘(Extraction Mechanism)을 사용하여 변경 사항 감지

장점: 전체 코드베이스를 다시 스캔(Scan)할 필요 없이 분석 시간(Analysis Time) 단축 및 자원 효율성(Resource Efficiency) 향상

결과적으로 코드 변경 빈도가 높은 프로젝트에서 CI/CD 파이프라인(CI/CD Pipeline) 속도 개선에 기여할 수 있다.

성능 향상(Performance Improvement) 벤치마크

글에 따르면 10만 개 이상의 저장소(Repository)를 대상으로 분석 시간을 측정한 결과, 언어별로 최대 40%의 속도 향상을 보였다.

분석 시간 분류: 비점진적(Non-incremental) 스캔 실행 시간에 따라 3개 그룹으로 분류

속도 향상: 3분 미만(Less than three minutes)의 스캔에서 가장 큰 성능 향상 확인

벤치마크 한계: 구체적인 벤치마크 수치는 공개되지 않음

이러한 성능 개선은 코드큐엘(CodeQL)을 사용하는 개발자들의 개발 생산성(Development Productivity) 향상에 직접적인 영향을 미칠 것으로 예상된다.

코드큐엘(CodeQL) CLI 미지원에 따른 제약

본문에서는 점진적 분석(Incremental Analysis) 기능이 코드큐엘(CodeQL) CLI에서는 아직 지원되지 않음을 명시했다.

적용 범위 제한: 기본 쿼리 세트(Default Query Suite)를 사용하는 경우에만 해당

CLI 사용자의 불편: CLI를 통해 코드큐엘(CodeQL)을 사용하는 개발자들은 점진적 분석의 이점(Benefit)을 즉시 누릴 수 없음

향후 지원 계획: 코드큐엘(CodeQL) CLI에 대한 점진적 분석 지원은 향후 업데이트(Future Update)를 통해 제공될 예정

결과적으로 CLI 사용자는 지속적인 업데이트(Continuous Update) 확인을 통해 최신 기능을 활용해야 한다.

코드큐엘(CodeQL)의 경쟁 기술 비교

코드 품질 분석 도구(Code Quality Analysis Tool)는 코드큐엘(CodeQL) 외에도 다양한 솔루션이 존재하며, 각 도구는 특정 언어(Specific Language) 및 분석 방식(Analysis Method)에 강점을 가진다.

소나큐브(SonarQube): 다양한 언어 지원 및 광범위한 코드 품질 규칙(Code Quality Rule) 제공

린트(Lint) 도구: 코드 스타일(Code Style) 및 잠재적 버그(Potential Bug) 검출에 특화

코드큐엘(CodeQL)의 차별점: 정적 분석(Static Analysis) 기반의 강력한 버그 탐지(Bug Detection) 능력점진적 분석(Incremental Analysis)을 통한 빠른 분석 속도

코드큐엘(CodeQL)은 특히 보안 취약점(Security Vulnerability) 분석에 강점을 가지며, CI/CD 파이프라인(CI/CD Pipeline) 통합을 통해 개발 효율성을 높일 수 있다.

Faster incremental analysis with CodeQL in pull requests