문서는 SoanrQube의 간단한 소개에 대한 정보를 공유하기 위해 작성되었다.
목차 |
---|
SonarQube는
SonarQube는 지속적인 인스펙션 패러다임을 지원하는 최상의 제품입니다. 지속저인 코드 인스펙션은 소프트웨어 개발 라이프사이클의 완전한 부분으로 내부 소프트웨어 품질 향상 시킬 수 있는 코드 품질 관리 패러다임입니다.
지속적인 코드 품질 관리를 통해 개발 조기에 코드 문제를 해결하고 자동화된 코드 감사를 통해 최신 상태의 코드 문제를 확인할 수 있게 해줍니다.
SonarQube 주요 특징
- 코드 품질을 관리
- 플러그인을 통한 기능 및 비기능 확장
- 다양한 프로그래밍 언어지원
- 직관적인 UI
- 코드 품질 관리의 편의성
SonarQube 데모 사이트
- 지속적인 인스펙션
- 지속적인 통합과 같이 빌드와 연동하여 지속적으로 코드에 대한 인스펙션을 수행합니다.
- 품질 중앙화
- 개발된 조직의 코드의 품질을 중앙 저장소에서 가시화하고 단일 위치에서 관리합니다.
- DevOps와의 통합
- 다양한 빌드 시스템, CI 엔진과 통합되어 DevOps 실천을 지원합니다.
- 품질 요구사항 설정
- 품질 게이트를 통해 표준화된 코드 품질 요구사항을 설정합니다.
- 다중 언어 분석
- 20개가 넘는 프로그램 언어에 대한 코드 분석을 지원합니다.
- 플러그인을 통한 확장
- 다수의 플러그인을 통해 SonarQube의 기능을 확장할 수 있습니다.
SonarQube 데모 사이트
- 클라우드 사이트를 통한 데모
- 최신 버전의 SonarQube 체험https://sonarqube.com/
SonarQube 소프트웨어 품질
SonarQube는 다음 일곱 가지 7가지 품질 요소를 기준으로 소프트웨어 품질을 구분하고 관리하고 있다.
- Architecture & Design
- Duplication
- Unit Test
- Complexity
- Potential Bugs
- Coding Rules
- Comments
Architecture & Design
아키텍처와 설계에 영향을 미치는 주요 요소는 다음과 같은 것들이 있다.
- Dependencies 의존성
- Response for class 클래스 응답성
- Code complexity 코드 복잡도
- Code Smells(Maintainability)
- Bugs(Reliability)
- Vulnerabilities(Security)
- Coverage
- Duplications
- Size
- Complexity
1.Code Smells(Maintainability)
심각한 이슈는 아니지만 베스트 프렉티스에서 사소한 이슈들로 모듈성(modularity), 이해가능성(understandability), 변경가능성(changeability), 테스트용의성(testability), 재사용성(reusability) 등이 포함된다.
- Code Smells
- Debt
- Debt Ratio
2.Bugs(Reliability)
일반적으로 잠재적인 버그 혹은 실행시간에 예상되는 동작을 하지 않는 코드를 나타낸다.
- Code Smells
- Debt
- Debt Ratio
3.Vulnerabilities(Security)
해커들에게 잠재적인 약점이 될 수 있는 보안상의 이슈를 말한다. SQL 인젝션, 크로스 사이트 스크립팅과 같은 보안 취약성을 찾아낸다.
- Code Smells
- Debt
- Debt Ratio
4.Duplications
...
코드 중복은 코드의 품질을 저해시키는 가장 큰 요인 중 하나이다.
- Density
- Duplicated Lines
- Duplicated Blocks
- Duplicated Files
5.Unit Tests
단위테스트 커버리지를 통해 단위 테스트의 수행 정도와 수행한 테스트의 성공/실패 정보를 제공한다.
...
- Line Coverage : 구문 커버리지
- Condition Coverage ; 조건 커버리지
Unit Test Result
- Unit Tests : 단위 테스트 수
- Failures : 실패한 단위테스트 코드 수
- Errors : 에러가 발생한 단위 테스트 코드 수
- Tests Skipped : 스킵한 단위 테스트 코드 전체 수Skipped
- Success : 스킵한 단위 테스트 코드 수성공률
- Execution Time Duration : 단위 테스트 수행에 소요된 시간
6.Complexity
순환복잡도(Cyclomatic Complexity) 측정,
- 코드의 논리적인 흐름상에 존재하는 독립적인 선형 경로의 개수를 의미
함수별/클래스별/파일별 평균 복잡도를 표시하며 함수/파일 단위로 복잡도 분포를 제공한다.
Potential Bugs
- Programming practices
- Programming principles
- Architecture best practices
Coding Rules
소스코드 Coding conventions을 통해 작성에 대한 가이드를 제공한다.
- 코드 들여쓰기
- 주석 작성법
- 변수 및 함수 선언 명명법
- 구문 작성법
- 화이트 스페이스 사용법
- 프로그래밍 룰
Comments
...
인지복잡도(Cognitive Complexity) 측정
7.Size
소스코드 사이즈와 관련된 다양한 지표를 제공합니다.
- 코드 라인수
- 전체 라인수
- 구문
- 함수
- 클래스
- 파일
- 디렉토리
- 주석 수
- 코멘트 비율
주요 용어
Continuous Inspection
...