버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

이 문서는 10.2버전부터 추가된 SonarQube Clean Code 분류 체계에 대한 정보를 공유하기 위해 작성되었다SonarQube의 핵심 개념인 클린 코드에 대해 설명한다.

 

목차


Clean

...

Code란?

클린코드는 소프트웨어가 의도한 대로 동작하며, 높은 품질 기준을 만족하도록 만드는 코드를 의미한다.

클린코드의 핵심 속성은 보안성, 신뢰성, 유지보수성으로, 이를 통틀어 소프트웨어 품질이라고

...

Clean Code는 소프트웨어가 의도한 대로  작동하고 높은 품질 표준을 충족하도록 보장한다.

Sonar 솔루션은 클린 코드(Clean Code) 상태, 즉 소프트웨어를 안전하고 안정적이며 유지 관리 가능하게 만드는 특성을 지닌 코드를 달성하는 데 도움을 주기 위해 설계되었다. 

보안, 신뢰성 및 유지 관리 가능성을 소프트웨어 품질이라고 한다.



Clean Code 정의

SonarQube는 Clean Code를 일관성, 의도성, 적응성, 책임성이라는 속성을 가진 코드로 정의한다.

Image Removed클린코드는 다음과 같은 특성을 갖춘 코드를 의미합니다.

일관성(Consistentency)

일관성 코드는 통일되고 전통적인 방식으로 작성되며, 모든 코드는 서로 다른 시간에 여러 명의 기여자가 있더라도 유사해 보이고 규칙적인 패턴을 따른다. 형식이 지정되고 일반적이며 식별 가능하다.

...

  • 식별 가능(Identifiable) : 이름은 언어 규칙을 기반으로 한 일반적인 구조를 따르며 식별자에 사용되는 대/소문자 구분 기호, 접미사, 접두사는 임의의 차이 없이 목적을 갖는다.

의도성(Intentionality)

의도성 코드는 정확하고 목적이 있고 모든 지시사항은 의미가 있고 적절하게 구성되어 있으며 동작을 명확하게 전달한다. 명확하고 논리적이며 완전하고 효율적이다.

...

  • 효율성(Efficient) : 효율적인 코드는 불필요한 낭비 없이 리소스를 활용한다. 가능한 경우 경제적인 옵션을 우선시하여 메모리, 프로세서, 디스크 또는 네트워크 리소스의 불필요한 소비를 방지한다.

적응성(Adaptability)

적응성 코드는 쉽게 진화하고 자신있게 개발할 수 있도록 구성되어 있다. 부품을 쉽게 확장하거나 용도를 변경할 수 있으며 바람직하지 않은 부작용 없이 국부적인 변경을 촉진한다. 집중적이고 고유하며 모듈식이며 테스트된다.

...

  • 테스트됨(Tested) : 테스트 된 코드에는 기능에 대한 확신을 제공하는 자동화된 검사가 포함되어 있다. 기능적 회귀 위험 없이 구현 변경을 가능하게 하는 충분한 테스트 범위를 갖추고 있다.

책임성(Responsibility)

책임성 코드는 데이터에 대한 윤리적 의무와 사회적 규범을 고려한다.  합법적이고, 신뢰할 수 있으며, 존중적이다.

...

  • 존중적(Respectful) : 존중적 코드는 차별적이고 공격적인 언어 사용을 자제한다. 동일한 의미를 전달하는 대안이 존재할 때마다 포괄적인 용어를 우선시하기로 결정한다.


CleanCode 이점 : 소프트웨어 품질

Clean Code는 안전하고 안정적이며 유지 관리가 가능한 소프트웨어로 이어진다. 

보안, 신뢰성, 유지 관리성이라는 세 가지 측면을 Sonar 솔루션에서는 소프트웨어 품질(Software qualities)이라고 부르며 , 이는 소프트웨어의 장기적인 가치에 기여한다.Image Removed


보안(Security)

보안은 무단 액세스, 사용 또는 파괴로부터 소프트웨어를 보호하는 것이다.

신뢰성(Reliability)

소프트웨어가 명시된 기간 동안 명시된 조건에서 성능 수준을 유지할 수 있는 방법을 측정한 것이다.

유지 관리성(Maintainability)

유지 관리성은 소프트웨어 코드를 쉽게 수정, 개선 및 이해할 수 있음을 의미한다.



Clean Code 기반의 코드 분석

Sonar 솔루션은 코드의 클린 코드를 방해하는 모든 문제를 식별하는 것을 목표로 한다.

...

  • 각 규칙(Rule):
     -  각 규칙은 평가하는 Clean Code 속성과 연관되어 있다.
     -  각 규칙은 클린 코드 속성이 기여하는 소프트웨어 품질과 연관되어 있다.
        각 관련 소프트웨어 품질(보안, 신뢰성 또는 유지 관리 가능성)에는 심각도(높음, 중간 또는 낮음)가 지정된다. 심각도(Severity)는 규칙이 위반될 때 소프트웨어 품질이 얼마나 영향을 받는지 결정한다.
  • 규칙이 위반되면 이슈(Issue)가 제기된다. 이슈(Issue)는 규칙(Rule)에서 상속된 다양한 심각도로 하나 이상의 소프트웨어 품질에 영향을 미친다.

하위 그림은 Sonar 솔루션의 Clean-Code 기반 분석 원리를 보여준다.

...