ast-grep(sg) เป็นเครื่องมือ CLI สำหรับการค้นหาโครงสร้างโค้ด ผ้าสำลี และการเขียนใหม่
ast-grep เป็นเครื่องมือที่ใช้ AST เพื่อค้นหาโค้ดด้วยโค้ดรูปแบบ คิดว่ามันเป็นเพื่อนเก่าของคุณ grep
แต่จับคู่โหนด AST แทนข้อความ คุณสามารถเขียนรูปแบบได้เหมือนกับว่าคุณกำลังเขียนโค้ดธรรมดา มันจะจับคู่โค้ดทั้งหมดที่มีโครงสร้างทางวากยสัมพันธ์เหมือนกัน คุณสามารถใช้เครื่องหมาย $
+ ตัวอักษรตัวพิมพ์ใหญ่เป็นไวด์การ์ด เช่น $MATCH
เพื่อจับคู่โหนด AST เดียว คิดว่ามันเป็น REGEX .
ยกเว้นว่าจะไม่ใช่ข้อความ
ลองเล่นสนามเด็กเล่นออนไลน์เพื่อลิ้มรส!
ดูภาพหน้าจอเพิ่มเติมบนเว็บไซต์
คุณสามารถติดตั้งได้จาก npm, pip, cargo, homebrew, scoop หรือ MacPorts!
npm install --global @ast-grep/cli
pip install ast-grep-cli
cargo install ast-grep --locked
# install via homebrew, thank @henryhchchc
brew install ast-grep
# install via scoop, thank @brian6932
scoop install main/ast-grep
# install via MacPorts
sudo port install ast-grep
หรือคุณสามารถสร้าง ast-grep จากแหล่งที่มาได้ คุณต้องติดตั้งrustup โคลนพื้นที่เก็บข้อมูลแล้ว
cargo install --path ./crates/cli --locked
แพ็คเกจมีอยู่ในแพลตฟอร์มอื่นด้วย
ast-grep มีแบบฟอร์มดังต่อไปนี้
sg --pattern 'var code = $PATTERN' --rewrite 'let code = new $PATTERN' --lang ts
sg -p ' $A && $A() ' -l ts -r ' $A?.() '
sg -p ' new Zodios($URL, $CONF as const,) ' -l ts -r ' new Zodios($URL, $CONF) ' -i
หากคุณพบว่า ast-grep น่าสนใจและมีประโยชน์สำหรับงานของคุณ โปรดซื้อกาแฟให้ฉัน เพื่อที่ฉันจะได้ใช้เวลากับโปรเจ็กต์นี้มากขึ้น!
แกนหลักของ ast-grep เป็นอัลกอริธึมในการค้นหาและแทนที่โค้ดตามแผนผังไวยากรณ์นามธรรมที่ผลิตโดย tree-sitter สามารถช่วยให้คุณทำการวิเคราะห์คงที่แบบน้ำหนักเบาและการจัดการโค้ดขนาดใหญ่ด้วยวิธีที่ใช้งานง่าย
ไฮไลท์สำคัญ:
รูปแบบที่ใช้งานง่ายในการค้นหาและแทนที่ AST รูปแบบของ ast-grep ดูเหมือนโค้ดธรรมดาที่คุณจะเขียนทุกวัน (คุณอาจพูดได้ว่ารูปแบบนั้น isomorphic กับโค้ด)
jQuery เช่น API สำหรับการแวะผ่าน AST และการจัดการ
การกำหนดค่า YAML เพื่อเขียนกฎการ Linting ใหม่หรือการแก้ไขโค้ด
เขียนด้วยภาษาที่คอมไพล์ โดยมีการแยกวิเคราะห์ตามผู้ดูแลต้นไม้และใช้งานหลายคอร์
อินเทอร์เฟซบรรทัดคำสั่งที่สวยงาม :)
วิสัยทัศน์ของ ast-grep คือการทำให้เวทมนตร์ต้นไม้ไวยากรณ์นามธรรมเป็นประชาธิปไตย และปลดปล่อยสิ่งหนึ่งจากการเขียนโปรแกรม AST ที่ยุ่งยาก!