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
- Mở Control Panel, chọn Advanced System Settings
- Set JAVA_HOME: đường dẫn cài đặt JDK
- Set Path: đường dẫn chứa thư mục bin của JDK
Bước 2: Tải các package
- Tải SonarQube (bản Community)
- 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
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.
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.
Sau khi hoàn tất mở cmd và gõ command sonar-scanner.bat -h. Nếu ra như sau thì là ok:
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:
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.
Refresh lại trang http://localhost:9000/, nhấn vào Projects, ta sẽ thấy báo cáo kết quả.
Ở 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é