Kiến thức

Trị CODE "THÚI" với SONARQUBE

Khi mình có cơ hội phỏng vấn ở một số công ty kiểu cũng to to í , 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

  • Tải SonarQube (bản Community)

alt text

  • Tải SonarQube-Scanner (bản Windows)

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 Filessonarqubeconf. Bỏ comment lệnh #sonar.search.port=9001 và đổi lại thành sonar.search.port=0

Chuyên gia chia sẻ  Công nghệ sổ cái phân tán (Distributed ledger technology - DLT) là gì?

Vào trong thư mục C:Program Filessonarqubebinwindows-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.

Chuyên gia chia sẻ  [Giải đáp] Bread là danh từ đếm được hay không đếm được

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.

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é

Đánh giá bài viết post

Phạm Văn Sỹ

Tôi là Phạm Văn Sỹ chuyên gia uy tín trong lĩnh vực kinh tế và kinh doanh là sinh viên của trường Đại học Ngoại Thương. Với kiến thức sâu rộng sau 12 năm ở bên ngoài thương trường thị trường tôi mong muốn chia sẻ các kiến thức chuyên sâu hữu ích dành cho mọi người.

Related Articles

Back to top button