Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

ShellCheck – เครื่องมือที่แสดงคำเตือนและคำแนะนำสำหรับเชลล์สคริปต์

ShellCheck เป็นเครื่องมือวิเคราะห์สแตติกที่แสดงคำเตือนและคำแนะนำเกี่ยวกับโค้ดที่ไม่ถูกต้องในเชลล์สคริปต์ bash/sh สามารถใช้ได้หลายวิธี:จากเว็บโดยวางเชลล์สคริปต์ของคุณในโปรแกรมแก้ไขออนไลน์ (Ace - โปรแกรมแก้ไขโค้ดแบบสแตนด์อโลนที่เขียนด้วย JavaScript) ใน https://www.shellcheck.net (จะซิงโครไนซ์กับ git ล่าสุดเสมอ คอมมิต และเป็นวิธีที่ง่ายที่สุดในการทดลองใช้ ShellCheck) เพื่อรับข้อเสนอแนะทันที

อีกวิธีหนึ่ง คุณสามารถติดตั้งบนเครื่องของคุณและเรียกใช้จากเทอร์มินัล ผสานรวมกับโปรแกรมแก้ไขข้อความของคุณ เช่นเดียวกับในบิลด์หรือชุดทดสอบของคุณ

มีสามสิ่งที่ ShellCheck ทำเป็นหลัก:

  • มันชี้ให้เห็นและอธิบายปัญหาไวยากรณ์ทั่วไปของผู้เริ่มต้นซึ่งทำให้เชลล์แสดงข้อความแสดงข้อผิดพลาดที่คลุมเครือ
  • มันชี้ให้เห็นและอธิบายปัญหาทางความหมายระดับกลางทั่วไปที่ทำให้เชลล์ทำงานผิดปกติและตอบโต้โดยสัญชาตญาณ
  • นอกจากนี้ยังชี้ให้เห็นถึงคำเตือนที่ละเอียดอ่อน กรณีมุม และข้อผิดพลาดที่อาจทำให้สคริปต์การทำงานอย่างอื่นของผู้ใช้ขั้นสูงล้มเหลวภายใต้สถานการณ์ในอนาคต

ในบทความนี้ เราจะแสดงวิธีการติดตั้งและใช้งาน ShellCheck ด้วยวิธีต่างๆ เพื่อค้นหาจุดบกพร่องหรือโค้ดที่ไม่ถูกต้องในเชลล์สคริปต์ใน Linux

วิธีการติดตั้งและใช้งาน ShellCheck ใน Linux

ShellCheck สามารถติดตั้งภายในเครื่องได้อย่างง่ายดายผ่านตัวจัดการแพ็คเกจของคุณตามที่แสดง

บนเดเบียน/อูบุนตู

# apt-get install shellcheck

บน RHEL/CentOS

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

บน Fedora

# dnf install ShellCheck

เมื่อติดตั้ง ShellCheck แล้ว เรามาดูวิธีการใช้ ShellCheck ในวิธีต่างๆ ที่เรากล่าวถึงก่อนหน้านี้

การใช้ ShellCheck จากเว็บ

ไปที่ https://www.shellcheck.net และวางสคริปต์ของคุณในตัวแก้ไข Ace ที่มีให้ คุณจะเห็นผลลัพธ์ที่ด้านล่างของตัวแก้ไขดังแสดงในภาพหน้าจอด้านล่าง

ในตัวอย่างต่อไปนี้ เชลล์สคริปต์ทดสอบประกอบด้วยบรรทัดต่อไปนี้:

#!/bin/bash
#declare variables
MINARGS=2
E_NOTROOT=50
E_MINARGS=100
  
#echo values of variables 
echo $MINARGS
echo $E_NONROOT
exit 0;
ShellCheck – เครื่องมือที่แสดงคำเตือนและคำแนะนำสำหรับเชลล์สคริปต์ ShellCheck – เครื่องมือที่แสดงคำเตือนและคำแนะนำสำหรับเชลล์สคริปต์

จากภาพหน้าจอด้านบน สองตัวแปรแรก E_NOTROOT และ E_MINARGS มีการประกาศแต่ไม่ได้ใช้งาน ShellCheck รายงานว่าเป็น “ข้อผิดพลาดที่ชี้นำ”:

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

ประการที่สอง ชื่อผิด (ในคำสั่ง echo $E_NONROOT ) ใช้เพื่อ เลือกตัวแปร E_NOTROOT นั่นคือสาเหตุที่ ShellCheck แสดงข้อผิดพลาด:

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

อีกครั้งเมื่อคุณดูคำสั่ง echo ตัวแปรไม่ได้ถูกยกมาสองครั้ง (ช่วยป้องกัน globbing และ word split) ดังนั้น Shell Check จะแสดงคำเตือน:

SC2086: Double quote to prevent globbing and word splitting.

การใช้ ShellCheck จากเทอร์มินัล

คุณยังสามารถเรียกใช้ ShellCheck จากบรรทัดคำสั่ง เราจะใช้เชลล์สคริปต์เดียวกันด้านบนดังนี้:

$ shellcheck test.sh
ShellCheck – เครื่องมือที่แสดงคำเตือนและคำแนะนำสำหรับเชลล์สคริปต์ ShellCheck – เครื่องมือที่แสดงคำเตือนและคำแนะนำสำหรับเชลล์สคริปต์

การใช้ ShellCheck จากโปรแกรมแก้ไขข้อความ

คุณยังสามารถดู ShellCheck คำแนะนำและคำเตือนโดยตรงในเครื่องมือแก้ไขที่หลากหลาย นี่อาจเป็นวิธีที่มีประสิทธิภาพมากกว่าในการใช้ ShellCheck เมื่อคุณบันทึกไฟล์แล้ว ระบบจะแสดงข้อผิดพลาดใดๆ ในโค้ดให้คุณเห็น

ใน Vim , ใช้ ALE หรือ Syntastic (เราจะใช้สิ่งนี้):

เริ่มต้นด้วยการติดตั้ง เชื้อโรค เพื่อให้ง่ายต่อการติดตั้ง syntastic เรียกใช้คำสั่งด้านล่างเพื่อรับ pathogen.vim ไฟล์และไดเร็กทอรีที่ต้องการ:

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

จากนั้นเพิ่มสิ่งนี้ใน ~/.vimrc . ของคุณ ไฟล์:

execute pathogen#infect()

เมื่อคุณได้ติดตั้งเชื้อโรคแล้ว และตอนนี้คุณสามารถใส่ syntastic ลงใน ~/.vim/bundle ดังนี้

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

ถัดไป ปิด vim แล้วเริ่มใหม่เพื่อโหลดซ้ำ จากนั้นพิมพ์คำสั่งด้านล่าง:

:Helptags

ถ้าทุกอย่างเป็นไปด้วยดี คุณควรมี ShellCheck ผสานรวมกับ Vim ภาพหน้าจอต่อไปนี้แสดงวิธีการทำงานโดยใช้สคริปต์เดียวกันด้านบน

ShellCheck – เครื่องมือที่แสดงคำเตือนและคำแนะนำสำหรับเชลล์สคริปต์ ShellCheck – เครื่องมือที่แสดงคำเตือนและคำแนะนำสำหรับเชลล์สคริปต์

ในกรณีที่คุณได้รับข้อผิดพลาดหลังจากทำตามขั้นตอนข้างต้น แสดงว่าคุณอาจไม่ได้ติดตั้งเชื้อโรค อย่างถูกต้อง ทำซ้ำขั้นตอนแต่เพื่อให้แน่ใจว่าคุณได้ทำสิ่งต่อไปนี้:

  • สร้างทั้ง ~/.vim/autoload และ ~/.vim/bundle ไดเรกทอรี
  • เพิ่มบรรทัดปฏิบัติการของเชื้อโรค#infect() ใน ~/.vimrc ของคุณ ไฟล์.
  • ทำการโคลน git ของ syntastic ภายใน ~/.vim/bundle .
  • ใช้สิทธิ์ที่เหมาะสมเพื่อเข้าถึงไดเร็กทอรีด้านบนทั้งหมด

คุณยังสามารถใช้ตัวแก้ไขอื่นเพื่อตรวจสอบโค้ดที่ไม่ถูกต้องในเชลล์สคริปต์ เช่น:

  • ใน Emac , ใช้ Flycheck .
  • ใน Sublime ใช้ SublimeLinter
  • ใน Atom ใช้ประโยชน์จาก Linter
  • ในโปรแกรมแก้ไขอื่นๆ ส่วนใหญ่ ให้ใช้ความเข้ากันได้ของข้อผิดพลาด GCC

หมายเหตุ :ใช้แกลเลอรีโค้ดที่ไม่ถูกต้องเพื่อดำเนินการ ShellChecking มากขึ้น

ที่เก็บ ShellCheck Github:https://github.com/koalaman/shellcheck

แค่นั้นแหละ! ในบทความนี้ เราได้แสดงวิธีการติดตั้งและใช้งาน ShellCheck เพื่อค้นหาจุดบกพร่องหรือโค้ดที่ไม่ถูกต้องในเชลล์สคริปต์ของคุณใน Linux แบ่งปันความคิดของคุณกับเราผ่านทางส่วนความคิดเห็นด้านล่าง

คุณรู้จักเครื่องมืออื่นที่คล้ายคลึงกันหรือไม่? ถ้าใช่ ก็แชร์ข้อมูลเกี่ยวกับพวกเขาในความคิดเห็นด้วย