Trị CODE "THÚI" với SONARQUBE
clean code
18
Code conventions
5
Testing
30
White

bienthaikieusa viết ngày 09/08/2020

Khi mình có cơ hội phỏng vấn ở một số công ty kiểu cũng to to í :stuck_out_tongue_winking_eye::stuck_out_tongue_winking_eye: , thì quét SonarQube mỗi ngày là một quy định bắt buộc của họ. Vậy SonarQube là gì? Đơn giản nó là một công cụ scan code, để tìm ra các code “thúi” hoặc các code có thể bị vướng các luật security nghiêm trọng. Đôi khi các khách hàng cũng yêu cầu đội ngũ phần mềm phải xử hết bug từ kết quả quét SonarQube trước khi ký nghiệm thu.
Ở bài viết lần này, mình sẽ giới thiệu cách cài đặt SonarQube và quét các projects viết bằng Java.

Bước 1: Cài đặt JDK 11

  • Tải JDK 11 và cài đặt vào ổ C:\Java

alt text

  • Mở Control Panel, chọn Advanced System Settings

alt text

alt text

  • Set JAVA_HOME: đường dẫn cài đặt JDK

alt text

  • Set Path: đường dẫn chứa thư mục bin của JDK

alt text

Bước 2: Tải các package

alt text

alt text

Các bạn giải nén tất cả và đổi tên thư mục thành sonarqube và sonar-scanner.
Copy tất cả các thư mục trên vào Program Files của ổ C.

Bước 3: Start server của SonarQube

Mở file sonar.properties tại C:\Program Files\sonarqube\conf. Bỏ comment lệnh #sonar.search.port=9001 và đổi lại thành sonar.search.port=0

Vào trong thư mục C:\Program Files\sonarqube\bin\windows-x86-64, tìm và chạy file StartSonar.bat để bật server sonarqube lên. Sau khi chạy thành công thì vẫn để cửa sổ chứ không được tắt.
Thấy dòng chữ SonarQube is up là thành công.

alt text

Bước 4: add sonarqube-scanner vào Path

Vào Environment Variables tương tự như bước 1. Tìm đến phần Path. Thêm đường dẫn chứa thư mục bin của sonar-scanner.

alt text

Sau khi hoàn tất mở cmd và gõ command sonar-scanner.bat -h. Nếu ra như sau thì là ok:

alt text

Bước 5: Tìm và cài đặt gói ngôn ngữ cần test

Gõ địa chỉ http://localhost:9000/. Đăng nhập ID/Password với admin/admin. Làm theo các bước sau:

alt text

Nếu gói ngôn ngữ đó vẫn ở trạng thái Install (màu xanh), thì hãy cài đặt nó nhé.

Bước 6: Config sonar trong project

Mình sẽ lấy source của project ChitChat mà đã được giới thiệu ở các bài viết trước để làm ví dụ.
Tạo 1 file config có tên là sonar-project.properties và có nội dung như sau:

# must be unique in a given SonarQube instance
sonar.projectKey=ChitChatAPI
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=ChitChatAPI
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Replace “\” by “/” on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=E:/Projects/Pet Projects/java/ChitChatAPI/src/main/java/com

# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8

sonar.language=java
sonar.java.binaries=target/classes

Copy file này vào trong thư mục chứa source code, cụ thể ở đây là E:/Projects/Pet Projects/java/ChitChatAPI

Bước 7: Scan source

Tiếp theo mở cmd và cd đến thư mục trong sonar.source (nơi bạn đã copy file sonar-project.properties lúc nãy). Chạy lệnh sonar-scanner để chương trình test lỗi. Nếu trong quá trình chạy không báo lỗi gì thì ta đã thành công việc phân tích lỗi.

alt text

Refresh lại trang http://localhost:9000/, nhấn vào Projects, ta sẽ thấy báo cáo kết quả.

alt text

alt text

Ở trang chi tiết của Project, ta có thể nhìn thấy rõ các Issues được phân loại theo Bugs, Vulnerabilities, Security hay Code Smells. Nhấn vào số lượng bugs ở mỗi loại, Sonar sẽ đưa ra cụ thể từng Issue nằm ở Class nào cũng như đề xuất giải pháp để sửa.

alt text

Như ví dụ trên, Sonar khuyến cáo mình nên đổi tên biến created_on thành createdOn.

Trong quá trình vọc, có bước nào chưa làm được, đừng ngần ngại comment cho mình bên dưới nhé :smiley::smiley::smiley:

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

bienthaikieusa

11 bài viết.
1 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
7 1
Để tạo ra một sản phẩm bán chạy, bạn phải dựa trên đúng nhu cầu của các khách hàng tiềm năng. Cũng nguyên tắc tương tự, một trang Web không thể thà...
bienthaikieusa viết 7 tháng trước
7 1
White
4 0
"Master programmers think of systems as stories to be told rather than programs to be written.” – Robert C. Martin. (Tạm dịch: “Các lập trình viê...
bienthaikieusa viết 4 tháng trước
4 0
White
3 2
Đã bao giờ bạn nghĩ tới việc sẽ thử lòng người yêu, đồng nghiệp hay bất kỳ đối tượng nào bằng một khảo sát (survey) đơn giản? Và hơn nữa chỉ với mộ...
bienthaikieusa viết 7 tháng trước
3 2
Bài viết liên quan
White
6 0
1. Định nghĩa Một kế hoạch kiểm thử dự án phần mềm (test plan) là một tài liệu mô tả các mục tiêu, phạm vi, phương pháp tiếp cận, và tập trung vào...
Thiên Hoàng Minh Vũ viết gần 3 năm trước
6 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
11 bài viết.
1 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!