Thursday, April 25Trang thông tin giải pháp website và công nghệ
Shadow

Kiểm tra chất lượng code website với Sonarqube

1. SonarQube là gì?

SonarQube là một nền tảng mã nguồn mở được phát triển bởi SonarSource để liên tục kiểm tra chất lượng code, review tự động với việc phân tích code để phát hiện lỗi, đoạn code không tốt, hoặc lỗ hổng bảo mật trên 20 ngôn ngữ lập trình. Sonarqube hiện hỗ trợ các ngôn ngữ lập trình sau: Java (including Android), C#, Go, PHP, JavaScript, C/C++, COBOL, PL/SQL, PL/I, ABAP, VB.NET, VB6, Python, RPG, Flex, Objective-C, Swift, Web and XML. Nó được tích hợp vào công cụ phát triển Eclipse, Visual Studio, IntelliJ IDEA thông qua plugin SonarLint và tích hợp với các công cụ khác như LDAP, Active Directory, GitHub…. Bài này mình sẽ hướng dẫn các bạn tích hợp vào hệ thống quản lý code với docker, bên mình đang thực hiện để quản lý chất lượng đầu ra sản phẩm
Màn hình hiển thị kết quả quét của Sonar qube

2. Cài đặt SonarQube

Bên mình sử dụng Linux server cho sonar page, và máy window (máy mình) cho sonar scanner Các bạn tải về SonarQube tại đây:  https://www.sonarqube.org/downloads/

2.1. Cấu hình yêu cầu cho Sonar scanner

  1. Tối thiểu 2GB RAM
  2. Dung lượng ổ cứng phụ thuộc vào khối lượng code mà bạn sử dụng SonarQube phân tích
  3. Ổ cứng có I/O tốt

2.2. Cài đặt Sonar page với docker swarm

Ở đây mình sẽ setup stack cho docker để run automation. Để hiểu rõ hơn về docker stack eco, các bạn vui lòng tham khảo bài viết trước của mình về docker và traefik Ở đây mình sẽ sử dụng sonarqube phiên bản 8.2 community, mình sẽ sử dụng postgres làm database cho website
version: "3"

services:
  sonarqube:
    image: sonarqube:8.2-community
    ports:
      - "9000:9000"
    networks:
      - backend
      - proxy
    command: -Dsonar.ce.javaOpts=-Xmx1192m -Dsonar.web.javaOpts=-Xmx1192m
    environment:
      - SONARQUBE_JDBC_URL=jdbc: đường dẫn đến database
      - SONARQUBE_JDBC_USERNAME=tên đăng nhập mặc định cho sonar
      - SONARQUBE_JDBC_PASSWORD=mật khẩu cho sonar
    depends_on:
      - postgres
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
      - sonarqube_temp:/opt/sonarqube/temp
    deploy:
      labels:
        - "traefik.enable=true" 
        - "traefik.http.routers.sonar.entrypoints=web"
        - "traefik.http.routers.sonar.tls=false"
        - "traefik.http.routers.sonar.rule=Host(`sonar.giaiphapthietkeweb.com`)"
  postgres:
    image: postgres
    ports:
      - "5432:5432"
    networks:
      - backend
    environment:
      - POSTGRES_USER= username
      - POSTGRES_PASSWORD= mật khẩu
      - POSTGRES_DB= mật khẩu DB
    volumes:
      - postgresql:/var/lib/postgresql
      # This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52
      - postgresql_data:/var/lib/postgresql/data
networks:
  backend:
    external: true
  proxy:
    external: true
volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  sonarqube_temp:
  postgresql:
  postgresql_data:
Các bạn chú ý mật khẩu của sonar khi truy xuất phải trùng với mật khẩu postgres ở dưới nhé

3. Hướng dẫn sử dụng SonarQube

Bước 1: Click vào “Login” và sử dụng tài khoản mặc định “admin” với password “admin” để đăng nhập
Bước 2: Điền tên của Project của bạn để tạo project và token
Nhập tên project
Nhập token trùng với tên project
Bước 3: Chọn ngôn ngữ và scanner – Chọn hệ điều hành, ở đây mình sẽ chọn windown vì scanner mình nằm trên window (máy của mình), -Tiếp theo các bạn copy đoạn code ở dưới và tạo file bat trong thư mục code của các bạn
Việc tiếp theo khá easy các bạn chỉ việc run code_quality.bat và ngồi đợi. Lưu ý máy bạn phải được cài sẵn sonar scanner mới run được hen. Chúc bạn thành công!

Leave a Reply

Your email address will not be published. Required fields are marked *