SonarCloud Automatic Analysis 사용해보기 (무료)

![sonarcloud-logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/803558b2-c1a7-f49b-ff63-884a852cf8d4.png)
## TL;DR
> :unlock: Public 저장소는 :thumbsup_tone2: 무료로 아주 간단히 Sonar 분석을 할 수 있습니다.
  **SonarCloud Automatic Analysis** 이를 가능하게 도와줍니다. (베타)
  
![sonar001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/8a7ccb51-1264-d7a9-2d6d-ec281f2fa5a4.png)


## 시작하기
https://sonarcloud.io/ 에 가입 합니다. 저는 Github 계정으로 진행하였습니다.
![sonarcloud002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/3b89688f-dc78-8d61-4082-eae206ad28c7.png)
SonarCloud와 Github 간의 연동 작업을 진행합니다.
![s03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/3933150f-bb23-fa66-1253-502a83176127.png)
`leechungkyu/sonarqube-demo` 저장소를 선택합니다.
![s04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/60968b9a-149c-4a0e-df89-cda9e404d40e.png)
Key를 입력해줍니다.
![s06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/576c9e53-4bfb-c855-78ba-53155a4edcd3.png)
Plan을 선택합니다.
Public 저장소의 경우 Free 입니다.
![s07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/6b47da9a-f65a-ee24-d0cb-e02259d99804.png)
`sonarqube-demo` > Set Up 를 선택합니다.
![s08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/384299be-4f21-2f2c-1826-09a1ebb911db.png)
:point_right_tone2: 드디어! **SonarCloud Automatic Analysis** 선택합니다.
![s09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/f034dd78-2f8a-d02b-2687-968ab97e1842.png)

설정은 매우 간단합니다. 
저장소 루트 경로에 `.sonarcloud.properties` 빈(Empty) 파일을 추가만 하면 됩니다.
![s10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/008418a5-5db0-eb5b-4fcf-a6668bb9484c.png)
![s11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/672f5975-5367-f8db-4249-58ba948cc54d.png)
![s12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/b2da5223-3d3d-db46-7e70-9fa23603de95.png)

Sonar 분석이 자동 실행 됩니다. Analysis in progress.
잠시만 기다리면 Sonar 분석 결과를 확인할 수 있습니다.
또한 이후 추가 커밋 때마다 :repeat: Sonar 분석이 자동으로 실행됩니다. 
![s13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/0e856878-f20c-fb68-b0a7-be275cf1b51a.png)

우선 Passed 입니다. Sonar 분석이 default로 정해놓은 기준은 넘었습니다. 끝.
은 아니고.. Maintainability 만 조금 해결해 보겠습니다.
15min (Debt), 3 (Code Smells) 의미는 3개의 지적사항이 있고, 15분 해결하는데 시간이 필요할 것이라는 뜻입니다.
[s14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/dbca0ace-bb4f-dfb2-00be-c58b2ddb8756.png)

3 (Code Smells) 링크를 누르면 어떤 코드가 어디서 문제가 발생되는지 확인 가능합니다.
![s15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/43ec4065-8c0e-b4fc-b0d3-45aaed67385d.png)

> 아! `print`문을 괄호로 감싸야겠네요.

```python:as-is
18 print cmd
21 print os.system(cmd)
```
```python:to-be
18 print(cmd)
21 print(os.system(cmd))
```
코드를 `to-be`로 수정한 후, 커밋을 해줍니다. 
분석되는 동안 기다려줍니다. Analysis in progress.
Debt 과 Code Smells 가 각각 5min 과 1로 줄었습니다.
`print`문을 괄호로 감싸주는 개발 공수를 라인 단위 5min으로 산정해둔 것을 알 수 있습니다.
![s16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144058/e4290e70-2373-214c-a55c-ac40aef38610.png)

## 맺음말
:slight_smile: SaaS형 SonarQube 편하네요!