Lint Your Go Programs với gói GolangCI Lint

Linting là một loại phân tích mã tĩnh để xác định các lỗi cơ sở mã tiềm ẩn. Linters phân tích mã cho các lỗi cú pháp và các vấn đề về kiểu dáng. Quá trình này có thể giúp ngăn ngừa lỗi, cải thiện khả năng đọc, thực thi các phương pháp hay nhất và tiết kiệm thời gian.


Linting là một thực hành tiêu chuẩn trong phát triển phần mềm. Mặc dù không có phần mềm lót nào được tích hợp trong thư viện tiêu chuẩn của Go, nhưng vẫn có nhiều công cụ lót của bên thứ ba tồn tại trong hệ sinh thái Go. Chúng bao gồm các gói GolangCI Lint, Go Meta Linter và Staticcheck.


Gói xơ vải GolangCI

Logo GolangCI Lint, một chú chuột túi màu xanh đang cầm một chiếc khiên có vẽ một con bọ trên đó

Gói golangci-lint là một trình nói dối mạnh mẽ và linh hoạt dành cho Go có thể giúp bạn xác định và sửa lỗi mã. Tính dễ sử dụng, khả năng mở rộng và bộ công cụ tích hợp toàn diện của gói khiến gói này trở thành lựa chọn phổ biến của nhiều nhà phát triển Go.

GolangCI Lint phân tích mã nguồn Go và cung cấp phản hồi về các lỗi tiềm ẩn, vấn đề bảo mật và vi phạm kiểu mã hóa với chức năng phân tích hiệu suất cao và hỗ trợ tích hợp liên tục (CI).

Chạy lệnh đầu cuối này trong thư mục làm việc của dự án của bạn để cài đặt gói Golangci-lint:

 go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.51.1

Phiên bản Go của bạn phải là 1.19 trở lên để lệnh cài đặt gói. Bạn cũng có thể kiểm tra trang cài đặt golangci-lint để biết các phương pháp cài đặt khả dụng khác.

Lệnh sẽ cài đặt GolangCI trên hệ thống của bạn dưới dạng công cụ CLI. Bạn có thể xác minh cài đặt bằng lệnh này:

 golangci-lint --version

Lệnh sẽ hiển thị phiên bản golangci-lint bạn đã cài đặt.

Cấu hình Linter

Kẻ nói dối rất linh hoạt, vì vậy để cài đặt kẻ nói dối, bạn sẽ phải định cấu hình kẻ nói dối cho dự án của mình.

Các golangci-lint công cụ sử dụng các tệp YAML để cấu hình. Bạn sẽ chỉ định cài đặt của kẻ nói dối trong tệp YAML để gói có thể đọc được.

Bạn có thể tạo một tệp cấu hình mặc định bằng lệnh này:

 golangci-lint config > .golangci.yml

Lệnh tạo một tệp mới có tên .golangci.yml trong thư mục hiện tại của bạn. Bạn có thể tiếp tục chỉnh sửa tệp này để định cấu hình kẻ nói dối cho dự án của mình.

Đây là nội dung của .golangci.yml tệp khi bạn chạy lệnh:

Hướng dẫn sử dụng tệp Golangci-lint YAML

Tệp chứa thông tin về golangci-lint công cụ và các tùy chọn bạn có thể sử dụng để định cấu hình quy trình niêm yết của mình.

Bạn sẽ cần chỉnh sửa tệp để thêm quy tắc linting cho chương trình của mình. Bạn có thể tìm thấy danh sách đầy đủ các xơ vải có sẵn trên trang tài liệu về xơ vải golangci-lint. Hoặc bạn có thể chạy giúp đỡ lệnh để xem các linters trên dòng lệnh của bạn:

 golangci-lint help linters

Lệnh xuất ra tất cả Linters có sẵn cho phiên bản của gói bạn đã cài đặt.

kết quả từ việc chạy lệnh trợ giúp trên Golangci-lint

Chạy Linter

Đây là minh chứng cho việc ghép câu “Xin chào, Thế giới!” sau đây. chương trình sử dụng mạng/http bưu kiện:

 package main
import (
    "fmt"
    "net/http"
)


func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, world!")
}


func main() {
    http.HandleFunc("https://www.smartreviewaz.com/", handler)
    http.ListenAndServe(":8080", nil)
}


Chương trình này định nghĩa một xử lý chức năng nhận các thể hiện của người viết và yêu cầu từ http gói của Phản HồiWriterLời yêu cầu các loại cấu trúc. Các xử lý chức năng viết “Xin chào, Thế giới!” cho khách hàng theo yêu cầu.

Các chủ yếu chức năng gắn kết các / tuyến đường đến xử lý chức năng, và lắng nghe và phục vụ chức năng khởi động máy chủ trên cổng localhost 8080.

Các lắng nghe và phục vụ trả về một lỗi, nhưng chương trình bỏ qua nó. Cấu hình này sẽ đảm bảo kẻ nói dối làm nổi bật vấn đề:

 linters-settings:
  deadcode:
    # ignore all test files
    skip-files: "_test\.go$"
  govet:
    # disable shadowing check
    check-shadowing: false
  golint:
    # ignore errors about exported function names
    exclude-use-default-exported: true
    # ignore errors about underscores in package names
    exclude-useless-naming: true
  gosec:
    # disable gosec tests, since they are slow and can produce false positives
    tests: false
  unused:
    # report unused function arguments, but not unused variables
    check-exported: true
    check-blank: true
    check-tests: true


Sau khi thiết lập cấu hình kẻ nói dối này, bạn có thể chạy kẻ nói dối bằng chạy yêu cầu:

 golangci-lint run
# equivalent, runs all programs
golangci-lint run ./...


Ngoài ra, bạn có thể lint các tệp cụ thể bằng cách chỉ định tên tệp hoặc đường dẫn sau dấu chạy yêu cầu:

  golangci-lint run dir1 dir2/... dir3/file1.go 

Đây là kết quả của việc chạy kẻ nói dối chống lại chương trình:

kết quả từ việc chạy kẻ nói dối trên chương trình http

Các golangci-lint công cụ rất linh hoạt và cấu hình của bạn sẽ thay đổi tùy theo dự án của bạn.

Bạn có thể lint các dự án JavaScript của mình với ESLint

Linting là một nhiệm vụ phát triển phần mềm phổ biến và hầu hết các ngôn ngữ lập trình và IDE đều cung cấp các công cụ cho các chương trình linting. Đối với JavaScript, ESLint là trình nói dối phổ biến nhất.

Eslint cung cấp nhiều quy tắc linting tuân theo các tiêu chuẩn ngành trong CLI, IDE và các công cụ soạn thảo văn bản, làm cho công cụ linting trở thành lựa chọn tuyệt vời cho các nhà phát triển JavaScript.

Previous Post
Next Post

post written by: