노션🔗에 작성했던 글을 옮긴 포스팅입니다. 노션이 더 보기 편합니다🤔 SonarQube가 뭐죠?SonarQube는 정적 코드 분석을 통해 버그, 코드 스멜, 보안 취약점 등을 자동으로 탐지하고 관리할 수 있게 해주는 툴이다.💡 정적 코드 분석(Static Code Analysis)이란?- 프로그램의 실제 실행 없이 코드를 분석하는 것.- 소스 코드 기반으로 진행되며, 미리 지정된 규칙(Rule) 셋을 통해 코드를 분석하기 때문에 빠르고 효율적이라는 장점이 있지만, 런타임이 실행되는 환경에서의 약점을 잡아내지 못한다는 단점이 존재한다.주요 기능버그 찾기: 잠재적 버그 찾기코드 스멜 감지: 지금은 문제가 없지만 나중에 문제가 될 수 있는 코드를 코드 스멜이라 부르고 그것을 찾아 내는 것보안 취약점 체크..
네부캠에서 그룹 프로젝트로 개발했던 프로젝트를 리팩토링하게 되며 가장 첫번째 목표로 코드 품질 개선을 목표로 잡았다. 근데 코드 품질이 정확히 뭘까? 어디가 코드 품질이 나쁜지 어떻게 측정하고 어떻게 개선할까? 이 궁금증을 먼저 해결해야 목표를 잡고 계획을 수립할 수 있을 것 같아서 코드 품질에 대해 알아봤다. 💡 코드 품질이란?코드 품질은 코드의 효율성, 가독성, 유용성에 대해 설명하는 방법이다.코드 품질의 기준유지보수성: 기존의 코드를 손상시키거나 새로운 버그를 발생시키지 않고 빠르게 코드를 수정하거나 추가할 수 있는가?가독성: 코드를 읽고 이해하기 얼마나 쉬운가?함수/변수 네이밍, 일관된 포맷팅과 코딩 스타일, 적절한 주석, 함수 하나의 크기가 적절한지, 모듈화, 응집도/결합도 등으로 가독성을 판..
모듈이란?모듈은 소프트웨어를 각 기능 별로 나눈 소스 단위를 말한다. 독립적으로 컴파일 가능한 프로그램 혹은 하나의 함수나 클래스도 모듈이 된다. 좋은 소프트웨어일수록 모듈의 독립성이 높다고 한다. 목적에 맞는 기능만으로 각 모듈을 만들어서 각 모듈이 주어진 기능만을 독립적으로 수행하게 만들면 다음과 같은 장점이 있기 때문이다. 모듈의 장점재사용성이 높다.코드의 이해가 쉽고 수정이 용이하다.하나의 모듈을 수정하더라도 다른 모듈에 끼치는 영향이 적다.이러한 모듈의 독립성은 모듈의 결합도(Coupling)와 응집도(Cohesion)를 기준으로 측정하게 된다. 결합도결합도는 모듈 간의 상호 의존 정도를 의미한다.결합도가 높으면 하나의 모듈을 변경해야할 때 연관된 다른 모듈까지 모두 변경해야 하는 일이 발생할 ..