Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

ShellCheck - Một Công cụ Hiển thị Cảnh báo và Đề xuất cho Tập lệnh Shell

ShellCheck là một công cụ phân tích tĩnh hiển thị các cảnh báo và đề xuất liên quan đến mã xấu trong các tập lệnh shell bash / sh. Nó có thể được sử dụng theo một số cách:từ web bằng cách dán tập lệnh shell của bạn vào trình chỉnh sửa trực tuyến (Ace - một trình soạn thảo mã độc lập được viết bằng JavaScript) trong https://www.shellcheck.net (nó luôn được đồng bộ hóa với git mới nhất cam kết và là cách đơn giản nhất để sử dụng ShellCheck) để có phản hồi tức thì.

Ngoài ra, bạn có thể cài đặt nó trên máy của mình và chạy nó từ thiết bị đầu cuối, tích hợp nó với trình soạn thảo văn bản cũng như trong các bộ xây dựng hoặc thử nghiệm của bạn.

Có ba điều ShellCheck chủ yếu thực hiện:

  • Nó chỉ ra và giải thích các vấn đề cú pháp điển hình của người mới bắt đầu khiến trình bao đưa ra các thông báo lỗi khó hiểu.
  • Nó chỉ ra và giải thích các vấn đề ngữ nghĩa ở cấp độ trung bình điển hình khiến lớp vỏ hoạt động kỳ lạ và phản trực giác.
  • Nó cũng chỉ ra những cảnh báo nhỏ, các trường hợp góc cạnh và cạm bẫy có thể khiến tập lệnh làm việc của người dùng nâng cao bị lỗi trong các trường hợp sau này.

Trong bài viết này, chúng tôi sẽ hướng dẫn cách cài đặt và sử dụng ShellCheck theo nhiều cách khác nhau để tìm lỗi hoặc mã xấu trong các tập lệnh shell của bạn trong Linux.

Cách cài đặt và sử dụng ShellCheck trong Linux

ShellCheck có thể dễ dàng cài đặt cục bộ thông qua trình quản lý gói của bạn như được hiển thị.

Trên Debian / Ubuntu

# apt-get install shellcheck

Trên RHEL / CentOS

# yum -y install epel-release
# yum install ShellCheck

Trên Fedora

# dnf install ShellCheck

Sau khi cài đặt ShellCheck, hãy xem cách sử dụng ShellCheck trong các phương pháp khác nhau mà chúng tôi đã đề cập trước đây.

Sử dụng ShellCheck Từ Web

Truy cập https://www.shellcheck.net và dán tập lệnh của bạn vào trình chỉnh sửa Ace được cung cấp, bạn sẽ thấy kết quả đầu ra ở cuối trình chỉnh sửa như được hiển thị trong ảnh chụp màn hình bên dưới.

Trong ví dụ sau, tập lệnh test shell bao gồm các dòng sau:

#!/bin/bash
#declare variables
MINARGS=2
E_NOTROOT=50
E_MINARGS=100
  
#echo values of variables 
echo $MINARGS
echo $E_NONROOT
exit 0;
ShellCheck - Một Công cụ Hiển thị Cảnh báo và Đề xuất cho Tập lệnh Shell ShellCheck - Một Công cụ Hiển thị Cảnh báo và Đề xuất cho Tập lệnh Shell

Từ ảnh chụp màn hình ở trên, hai biến đầu tiên E_NOTROOT E_MINARGS đã được khai báo nhưng không được sử dụng, ShellCheck báo cáo đây là "lỗi gợi ý":

SC2034: E_NOTROOT appears unused. Verify it or export it.
SC2034: E_MINARGS appears unused. Verify it or export it. 

Sau đó, thứ hai, tên sai (trong câu lệnh echo $ E_NONROOT ) đã được sử dụng để biến echo E_NOTROOT , đó là lý do tại sao ShellCheck hiển thị lỗi:

SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is

Một lần nữa khi bạn nhìn vào các lệnh echo, các biến chưa được trích dẫn kép (giúp ngăn chặn sự phân tách và tách từ), do đó Shell Check hiển thị cảnh báo:

SC2086: Double quote to prevent globbing and word splitting.

Sử dụng ShellCheck Từ Terminal

Bạn cũng có thể chạy ShellCheck từ dòng lệnh, chúng tôi sẽ sử dụng cùng một tập lệnh shell ở trên như sau:

$ shellcheck test.sh
ShellCheck - Một Công cụ Hiển thị Cảnh báo và Đề xuất cho Tập lệnh Shell ShellCheck - Một Công cụ Hiển thị Cảnh báo và Đề xuất cho Tập lệnh Shell

Sử dụng ShellCheck Từ Trình soạn thảo Văn bản

Bạn cũng có thể xem ShellCheck đề xuất và cảnh báo trực tiếp trong nhiều trình chỉnh sửa khác nhau, đây có lẽ là cách sử dụng ShellCheck hiệu quả hơn, khi bạn lưu tệp, nó sẽ hiển thị cho bạn bất kỳ lỗi nào trong mã.

Trong Vim , sử dụng ALE hoặc Syntastic (chúng tôi sẽ sử dụng cái này):

Bắt đầu bằng cách cài đặt Mầm bệnh để có thể dễ dàng cài đặt syntastic. Chạy các lệnh bên dưới để lấy mầm bệnh.vim tệp và các thư mục mà nó cần:

# mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

Sau đó, thêm cái này vào ~ / .vimrc của bạn tệp:

execute pathogen#infect()

Khi bạn đã cài đặt tác nhân gây bệnh và bây giờ bạn có thể đặt tổng hợp vào ~ / .vim / pack như sau:

# cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git

Tiếp theo, đóng vim và khởi động sao lưu để tải lại, sau đó gõ lệnh bên dưới:

:Helptags

Nếu mọi việc suôn sẻ, bạn nên có ShellCheck được tích hợp với Vim , các ảnh chụp màn hình sau đây cho thấy cách nó hoạt động bằng cách sử dụng cùng một tập lệnh ở trên.

ShellCheck - Một Công cụ Hiển thị Cảnh báo và Đề xuất cho Tập lệnh Shell ShellCheck - Một Công cụ Hiển thị Cảnh báo và Đề xuất cho Tập lệnh Shell

Trong trường hợp bạn gặp lỗi sau khi làm theo các bước ở trên, thì có thể bạn đã không cài đặt Tác nhân gây bệnh một cách chính xác. Làm lại các bước nhưng điều này đảm bảo rằng bạn đã làm như sau:

  • Đã tạo cả ~ / .vim / autoload ~ / .vim / pack thư mục.
  • Đã thêm dòng thực thi mầm bệnh # infect () vào ~ / .vimrc của bạn tệp.
  • Có phải bản sao git của syntastic bên trong ~ / .vim / pack không .
  • Sử dụng các quyền thích hợp để truy cập tất cả các thư mục trên.

Bạn cũng có thể sử dụng các trình chỉnh sửa khác để kiểm tra mã xấu trong các tập lệnh shell như:

  • Trong Emacs , sử dụng Flycheck .
  • Trong Sublime, hãy sử dụng SublimeLinter.
  • Trong Atom, hãy sử dụng Linter.
  • Trong hầu hết các trình chỉnh sửa khác, hãy sử dụng khả năng tương thích với lỗi GCC.

Lưu ý :Sử dụng thư viện mã xấu để thực hiện nhiều ShellChecking hơn.

Kho lưu trữ ShellCheck Github:https://github.com/koalaman/shellcheck

Đó là nó! Trong bài viết này, chúng tôi đã hướng dẫn cách cài đặt và sử dụng ShellCheck để tìm lỗi hoặc mã xấu trong các tập lệnh shell của bạn trong Linux. Chia sẻ suy nghĩ của bạn với chúng tôi qua phần bình luận bên dưới.

Bạn có biết bất kỳ công cụ tương tự nào khác ngoài đó không? Nếu có, hãy chia sẻ thông tin về họ trong phần bình luận.