Giới thiệu về ShellCheck
- ShellCheck là công cụ giúp tìm lỗi trong shell script.
- Có thể cài đặt trên môi trường cục bộ thông qua cabal, apt, dnf, pkg, brew.
- Chỉ cần dán script vào, ShellCheck sẽ xuất kết quả phân tích.
Đặc điểm của ShellCheck
- ShellCheck có thể được sử dụng tự do theo giấy phép GPLv3.
- Tài liệu được ghi chép trên ShellCheck Wiki, và có thể xem mã nguồn trên GitHub.
- Đã được đóng gói sẵn trong hầu hết các bản phân phối hoặc trình quản lý gói.
- Được hỗ trợ như một linter tích hợp trong các trình soạn thảo lớn, và có thể tự động kiểm tra mã trong kho lưu trữ GitHub thông qua CodeClimate, Codacy, CodeFactor.
- Được viết bằng ngôn ngữ Haskell, phù hợp với những người dùng quan tâm đến ngôn ngữ này.
Lời cảm ơn
- Gửi lời cảm ơn đặc biệt tới GitHub Sponsors: Gitpod, Mercedes-Benz, BashSupport Pro, per1234, WhitewaterFoundry, cavcrosby, dcminter, photostructure, Cronitor, djdefi, steve-chavez và nhiều hơn nữa.
Ý kiến của GN⁺
- Điều quan trọng nhất trong bài viết này là ShellCheck là một công cụ hữu ích để tìm lỗi trong shell script.
- ShellCheck miễn phí, được hỗ trợ trên nhiều nền tảng và trình soạn thảo, đồng thời dễ sử dụng, nên có thể khiến nhiều người thấy hứng thú.
- Đặc biệt, sự hỗ trợ từ cộng đồng mã nguồn mở và việc được phát triển bằng ngôn ngữ Haskell có thể tạo sức hút với các nhà phát triển phần mềm.
1 bình luận
Ý kiến Hacker News
Những điểm cần lưu ý khi viết script
-u(nounset) để phát sinh lỗi khi dùng biến chưa được khai báo. Ngoại lệ là khi mở rộng mảng, mảng rỗng có thể bị coi là unbound.-n(noexec) để ngăn lệnh thực thi.-e(errexit) cũng hữu ích, nhưng cần lưu ý rằng chỉ các lệnh "trần" bị thất bại mới khiến script thoát. Để tránh điều này, người viết thích thêm|| fail "..."vào lệnh.Phát hiện lỗ hổng trong shell script
$ENV_VARqua$((1 + ENV_VAR))thì có thể chèn mã.Shellcheck và strictbash
Nhắc đến Shellcheck
Sử dụng Haskell và Turtle
Sử dụng Shellcheck và các linter
.gitlab-ci.ymlnên khó kiểm tra. Đã tạo một wrapper để tự động kiểm tra chúng.Bash language server
Hiệu quả học hỏi từ Shellcheck
/bin/shproduction đầu tiên, dù đã viết script từ những năm 80, người viết vẫn học được điều mới.Khuyến nghị dùng Bach
Shellcheck và xử lý source/import
shgiống như một cơn ác mộng.