All Things Web Code Review Qodana

정적 분석을 통해 코드 검토 및 프로젝트 계획 시간 단축

Read this post in other languages:
English, Français, 简体中文

끝없이 이어지는 코드 검토와 디버그 작업에 진저리가 날 때면, 이후 개발 단계에서 오류가 발생할 염려 없이 지루한 작업을 자동화할 방법을 궁리해보셨을 겁니다. 자동화에 관심이 있다면 서버 측 정적 분석을 자세히 알아보세요. 스마트 IDE 시대에 프로젝트 수명 주기에서 한 단계를 추가하는 것의 이점은 무엇일까요? 정적 분석 도구에 위임할 수 있는 작업은 무엇일까요? 이 블로그 글에서 질문에 대한 답을 찾아보세요!

코드 검토 자동화

2019년 Active State 개발자 설문조사에 따르면 개발자 중 61.5%는 코드 작성 시간이 하루 4시간 미만이라고 합니다. 코딩 외에 수행하는 업무 중 하나는 코드 검토입니다. 코드 검토 프로세스의 핵심 목표는 품질 문제를 바로 발견하는 데 있습니다. 많은 프로젝트에서, 품질의 의미는 다음과 같습니다.

1) 완벽한 비즈니스 로직 구현

2) 코드 유지보수와 관련된 요소: 디자인 패턴, 이름 지정 전략, 코드 스타일 등

해당 프로세스가 전적으로 수동으로 이루어지는 경우, 코드를 검토할 때 두 가지 측면을 모두 고려해야 합니다. 따라서 오류 발생 확률이 높고, 오랜 시간이 소요될 수 있습니다. 다음 예시에서 정규 표현식과 관련된 코드 오류를 찾아보세요.

사람이 수행하기엔 쉽지 않은 작업일 수 있으나, 정적 분석 도구를 활용하면 간편한 작업입니다. 이는 하나의 예시에 불과합니다. 사용되지 않는 import 문, 불필요한 코드(dead code), 중복, 철자 오류, 서식 지정 관련 문제 등 다양한 문제에 대해 원하는 규칙을 기반으로 한 자동 검사를 수행할 수 있습니다. 예를 들어, 주석에 TODO가 사용된 경우, 각 주석에 이슈 트래커 참조가 포함되었는지 자동으로 검사할 수 있습니다. 이는 JetBrains의 일부 팀에서도 활용하는 검사입니다.

에디터에서 구성된 해당 검사는 개발자에게 지침 역할을 하지만, 서버 측 정적 분석 수행에서는 이러한 지침이 필수 규칙이 됩니다. 서버 측 품질 게이트는 수동 코드 검토 또는 프로덕션 배포 등의 다음 단계로 이동하기 전에, 코드가 특정 기준을 충족하도록 보장합니다. 따라서 코드 작성자와 검토자가 피드백을 주고 받는 데 소모하는 시간도 감소합니다. 그뿐 아니라, 자세한 기록을 증거로 남기고 추가 분석도 수행할 수 있습니다.

안심하고 외부 기여 활용

모든 팀원이 동등하게 뛰어난 역량을 갖추고, 정확성을 유지하며, 코드 품질에 대한 공통의 이해를 지닌 경우에도 코드 검토는 유용합니다. 클라이밍 전문가에게도 빌레이가 필요한 것과 마찬가지입니다. 기여자의 실제 역량을 명확히 모르는 경우엔 빌레이의 중요성이 더욱 커집니다. 프로젝트에서 외부 기여를 허용할 경우, 기여자가 지침을 준수하는 것을 추가로 보증할 수 있어야 합니다. 오픈소스 프로젝트의 풀 리퀘스트든 하청업체에 맡긴 작업이든, 자동 코드 검토로 루틴 검사를 수행하면 비즈니스의 핵심 가치에 집중할 수 있습니다.

프로젝트 계획 시간 단축

서버 측 정적 분석을 활용하면 작성된 코드를 검토하여, 코드 개선 단계를 계획할 수 있습니다. 최신 버전의 언어나 프레임워크를 적용하려는 경우를 생각해 보세요. 운이 좋다면, 종속 요소 업데이트만으로 프로젝트가 준비 완료되고 실행될 수 있습니다. 운이 없을 경우 종속 요소를 업데이트하고 나면 업데이트해야 할 수많은 위치가 IDE에 표시됩니다. 

한편, 대규모 프로젝트는 변경이 필요한 위치가 너무 많아 이를 완료하는 데 여러 사람이 참여해야 할 수 있습니다. 이러한 경우 작업을 어떻게 분배해야 할까요? 정적 분석 플랫폼을 활용하면 작업을 분배하고, 결과 추정을 위한 보고서 작성이 가능합니다. 또한, 코드에 필요한 모든 리팩터링에도 이를 활용할 수 있습니다. 예를 들어, 구조 검색 기반의 검사를 이용하면 주의가 필요한 모든 위치를 검토할 수 있습니다. 기술적으로 해당 분석은 개발자의 컴퓨터에서 수행할 수 있지만, 다른 사람에게 이슈 목록을 공유하여 추적하는 옵션은 없습니다.

프로젝트 수명 주기에 Qodana를 사용하여 정적 분석 수행

JetBrains의 코드 품질 플랫폼인 Qodana를 사용하면 정적 분석 도구의 이점을 활용하고, TeamCity, GitLab, GitHub 등 원하는 CI/CD 파이프라인과 통합할 수 있습니다. 아래 그림은 소프트웨어 개발 수명 주기에 사용되는 일반적인 소프트웨어 빌드 프로세스 및 해당 프로세스에 Qodana를 통합하는 방법을 설명합니다.

Qodana를 사용해 보려면 이전 블로그 게시물에서 자세한 설명을 확인하거나 기술 스택에 적합한 컴포넌트 버전을 다운로드하세요.

자세한 내용은 jetbrains.com/qodana에서 확인할 수 있습니다. 피드백을 보내주시면 감사하겠습니다. 어떤 의견이든 환영합니다! qodana-support@jetbrains.com 또는 이슈 트래커를 통해 연락해주세요.

Qodana 팀

게시물 원문 작성자

Jessie Cho

Kateryna Shlyakhovetska