Chasten เป็นโปรแกรม Python ที่ใช้การแสดงออกของ XPATH เพื่อค้นหารูปแบบในแผนผังนามสกุลนามธรรม (AST) ของโปรแกรม Python คุณสามารถใช้ Chasten เพื่อใช้กฎผ้าสำลีที่กำหนดค่าได้ของคุณเองอย่างรวดเร็วโดยไม่ต้องใช้กรอบการวิเคราะห์ AST ที่ซับซ้อนหรือหันไปใช้นิพจน์ปกติที่ไม่แน่นอน
คุณต้องการให้แน่ใจว่าโปรแกรม Python ไม่มีสามเท่า for ลูปภายในฟังก์ชั่น async หรือไม่? หรือคุณต้องการยืนยันว่าทุกฟังก์ชั่นในโปรแกรม Python ของคุณมีคำอธิบายประกอบประเภทและความคิดเห็น docstring หรือไม่? การตีสอนสามารถช่วยได้ ! ช่วยให้คุณสามารถแสดงการตรวจสอบเหล่านี้ - และการวิเคราะห์ประเภทอื่น ๆ อีกมากมายเช่นกัน - ในไฟล์ YAML อย่างง่ายที่มีการแสดงออกของ XPath
chasten (กริยาสกรรมกริยา) "เพื่อให้ใครบางคนตระหนักถึงความล้มเหลวหรือทำอะไรผิด" พจนานุกรมเคมบริดจ์
chasten (คำนามที่ไม่สามารถนับได้หรือเอกพจน์) "เครื่องมือที่วิเคราะห์แผนผังนามสกุลนามธรรมของโปรแกรม Python เพื่อตรวจจับแหล่งที่มาที่อาจเกิดขึ้นของข้อผิดพลาดของโปรแกรมเมอร์เพื่อป้องกันความล้มเหลวของโปรแกรม" นักพัฒนา Astutesource
chasten เตือนให้ฉันเพิ่มเอกสารและพิมพ์คำอธิบายประกอบให้กับฟังก์ชั่นทั้งหมดใน main.py มันง่ายที่จะเห็นว่าจะแก้ไขอะไร!"chasten ทำให้ฉันได้รับการยืนยันอย่างน่าเชื่อถือว่าโปรแกรมนักเรียนมีการสร้างการเข้ารหัสที่จำเป็นมันดีกว่าการใช้นิพจน์ทั่วไป!"chasten ทำให้มันสนุกและง่ายสำหรับฉันที่จะทำการวิเคราะห์โดยอัตโนมัติของฐาน Python ที่ฉันรักษาไว้"chasten ช่วยให้ฉันสำรวจข้อมูลที่ฉันรวบรวมได้อย่างมีประสิทธิภาพ" ทำตามขั้นตอนเหล่านี้เพื่อติดตั้งโปรแกรม chasten :
pipx install chasten เพื่อติดตั้ง chastenpipx list และยืนยันว่ามีการติดตั้ง chastenchasten --help เพื่อเรียนรู้วิธีการใช้เครื่องมือ คุณสามารถกำหนด chasten ด้วยไฟล์ YAML สองไฟล์โดยปกติเรียกว่า config.yml และ checks.yml แม้ว่า chasten สามารถสร้างการกำหนดค่าเริ่มต้นได้ แต่คุณสามารถตรวจสอบได้หรือไม่? Astutesource/chasten-configuration repository ตัวอย่างเช่น (s) ของไฟล์การกำหนดค่าที่ตั้งค่าเครื่องมือ แม้ว่าไฟล์ config.yml สามารถอ้างอิงไฟล์ตรวจสอบหลายไฟล์ตัวอย่างนี้แสดงวิธีระบุไฟล์ checks.yml เดียว:
# chasten configuration
chasten :
# point to a single checks file
checks-file :
- checks.yml ไฟล์ checks.yml ต้องมีการตรวจสอบอย่างน้อยหนึ่งรายการ สิ่งต่อไปนี้เป็นตัวอย่างของไฟล์การกำหนดค่าตรวจสอบที่มีการตรวจสอบสองรายการที่ค้นหาบรรทัดที่เรียกใช้งานได้ครั้งแรกของฟังก์ชั่นที่ไม่ใช่การทดสอบและกรณีทดสอบในโครงการ Python โปรดทราบว่าแอตทริบิวต์ pattern ระบุนิพจน์ XPATH เวอร์ชัน 2.0 ที่ chasten จะใช้เพื่อตรวจจับฟังก์ชัน Python ประเภทที่ระบุ คุณสามารถพิมพ์ chasten configure validate --config <path to chasten-configuration/ directory | config url> หลังจากกรอกข้อมูลใน <path to chasten-configuration/directory | config url> ด้วยชื่อที่มีคุณสมบัติครบถ้วนของไดเรกทอรีการกำหนดค่าของคุณและเครื่องมือจะยืนยันว่าการกำหนดค่าของคุณตรงตามข้อกำหนดของเครื่องมือ นอกจากนี้คุณยังสามารถใช้คำสั่ง chasten configure create command เพื่อสร้างการกำหนดค่าเริ่มต้นโดยอัตโนมัติ! การพิมพ์ chasten configure --help จะอธิบายวิธีการกำหนดค่าเครื่องมือ
checks :
- name : " all-non-test-function-definition "
code : " FUNC "
id : " FUNC001 "
description : " First executable line of a non-test function, skipping over docstrings and/or comments "
pattern : ' //FunctionDef[not(contains(@name, "test_"))]/body/Expr[value/Constant]/following-sibling::*[1] | //FunctionDef[not(contains(@name, "test_"))]/body[not(Expr/value/Constant)]/*[1] '
- name : " all-test-function-definition "
code : " FUNC "
id : " FUNC002 "
description : " First executable line of a test function, skipping over docstrings and/or comments "
pattern : ' //FunctionDef[starts-with(@name, "test_")]/body/Expr[value/Constant]/following-sibling::*[1] | //AsyncFunctionDef[starts-with(@name, "test_")]/body/Expr[value/Constant]/following-sibling::*[1] | //FunctionDef[starts-with(@name, "test_")]/body[not(Expr/value/Constant)]/*[1] | //AsyncFunctionDef[starts-with(@name, "test_")]/body[not(Expr/value/Constant)]/*[1] '
count :
min : 1
max : 10 เนื่องจาก chasten ต้องการโครงการที่มีซอร์สโค้ด Python เป็นอินพุตไปยังคอมมิวนิสต์ analysis คุณสามารถโคลนได้? Astutesource/LazyTracker และ? ที่เก็บ Astutesource/Multicounter ที่เป็นส้อมของโครงการ Python ที่มีอยู่ที่สร้างขึ้นเพื่อการวิเคราะห์ที่สะดวก ในการวิเคราะห์สองโครงการนี้ด้วย chasten คุณสามารถพิมพ์คำสั่งต่อไปนี้เพื่อสร้างไฟล์ผลลัพธ์ JSON สำหรับแต่ละโครงการ:
subject-data/ ไดเรกทอรีที่มี lazytracker/ Directory คุณสามารถเรียกใช้คำสั่ง chasten analyze สำหรับโปรแกรม lazytracker : chasten analyze lazytracker
--config < path to the chasten-configuration/ directory | config url >
--search-path < path to the lazytracker/ directory >
--save-directory < path to the subject-data/lazytracker/ directory >
--save ตอนนี้คุณสามารถสแกนเอาต์พุตเพื่อยืนยันว่าตัวอย่างเช่น chasten พบฟังก์ชั่นทดสอบ 6 ในโครงการ lazytracker หากคุณดูในไดเรกทอรี subject-data/lazytracker คุณจะพบไฟล์ JSON ที่มีชื่อเช่น chasten-results-lazytracker-20230823162341-4c23fc443a6b4c4aa09886f1ecb96e9f.json การ chasten ใช้การตี --save ในโปรแกรมนี้มากกว่าหนึ่งครั้งจะสร้างไฟล์ผลลัพธ์ใหม่ที่มีการประทับเวลาที่แตกต่างกัน (เช่น 20230823162341 ) และตัวระบุที่ไม่ซ้ำกัน (เช่น 4c23fc443a6b4c4aa09886f1ecb96e9f ) ในชื่อของมัน
หลังจากสร้าง multicounter/ directory ใน subject-data/ ไดเรกทอรีที่มีอยู่แล้วคุณสามารถเรียกใช้คำสั่ง chasten analyze สำหรับโปรแกรม multicounter :
chasten analyze multicounter
--config < path to the chasten-configuration/ directory | config url >
--search-path < path to the multicounter/ directory >
--save-directory < path to the subject-data/lazytracker/ directory >
--save ตอนนี้คุณสามารถสแกนเอาต์พุตเพื่อยืนยันว่าตัวอย่างเช่นนี้ chasten พบฟังก์ชั่นทดสอบ 10 ฟังก์ชั่นในโครงการ multicounter หากคุณดูในไดเรกทอรี subject-data/lazytracker คุณจะพบไฟล์ JSON ที่ multicounter ชื่อเช่น chasten-results-multicounter-20230821171712-5c52f2f1b61b4cce97624cc34cb39d4f.json
เนื่องจากการตรวจสอบ all-test-function-definition ระบุว่าโปรแกรมจะต้องมีการทดสอบระหว่าง 1 ถึง 10 คุณจะสังเกตเห็นว่าการตรวจสอบนี้ส่งผ่านสำหรับทั้ง lazytracker และ multicounter ซึ่งหมายความว่า chasten ส่งคืนรหัสข้อผิดพลาด 0 เพื่อสื่อสารกับระบบปฏิบัติการของคุณว่าการตรวจสอบผ่าน
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการใช้คำสั่ง analyze โดยการพิมพ์ chasten analyze --help ตัวอย่างเช่น chasten รองรับตัวเลือก --check-include และ --check-exclude ตัวเลือกที่ช่วยให้คุณสามารถรวมและไม่รวมการตรวจสอบเฉพาะตามกฎการจับคู่ฟัซซี่ที่คุณสามารถระบุสำหรับแอตทริบิวต์ของเช็คที่ระบุในไฟล์ checks.yml
หลังจากเรียกใช้ chasten ในโปรแกรม lazytracker และ multicounter คุณสามารถรวมไฟล์ JSON แต่ละไฟล์ลงในไฟล์ JSON เดียวไฟล์ CSV ที่เกี่ยวข้องและฐานข้อมูล SQLite เมื่อคุณสร้างไดเรกทอรี integrated-data/ แล้วคุณสามารถพิมพ์คำสั่งนี้เพื่อดำเนินการรวม:
chasten integrate all-programs
< path to subject-data > / ** / * .json
--save-directory < path to the integrated-data/ directory > คำสั่งนี้จะสร้างไดเรกทอรีเช่น chasten-flattened-csvs-sqlite-db-all-programs-20230823171016-2061b524276b4299b04359ba30452923/ chasten.db ของแต่ละ csv/ ฐานข้อมูล
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการ integrate คำสั่งย่อยโดยการพิมพ์ chasten integrate --help
เมื่อใช้คำสั่ง chasten การต่อท้ายสิ่งนี้ --verbose การตั้งค่าสถานะคำว่าสามารถปรับปรุงประสบการณ์การแก้ไขปัญหาของคุณได้อย่างมีนัยสำคัญและให้ความเข้าใจอย่างละเอียดเกี่ยวกับการทำงานของเครื่องมือ นี่คือตัวอย่างที่มี chasten analyze lazytracker :
chasten analyze lazytracker
--config < path to the chasten-configuration/ directory >
--search-path < path to the lazytracker/ directory >
--save-directory < path to the subject-data/lazytracker/ directory >
--save
--verbose เมื่อดำเนินการคำสั่งนี้คุณสามารถคาดหวังว่าเอาต์พุตจะมีข้อความที่ให้ข้อมูลเช่น Matching source code: ระบุว่าเครื่องมือกำลังเปรียบเทียบซอร์สโค้ดกับรูปแบบที่ระบุอย่างแข็งขัน นอกจากนี้คุณจะได้รับผลลัพธ์การจับคู่โดยละเอียดโดยให้ข้อมูลเชิงลึกเกี่ยวกับการตรวจสอบที่ระบุ
หากคุณต้องการสร้างแผงควบคุมการวิเคราะห์แบบโต้ตอบที่ใช้? Simonw/Datasette คุณสามารถเรียกใช้ chasten datasette-serve <path containing integrated results>/chasten.db --port 8001 ตอนนี้คุณสามารถใช้แดชบอร์ดในเว็บเบราว์เซอร์ของคุณเพื่อวิเคราะห์ผลลัพธ์ในขณะที่คุณศึกษาซอร์สโค้ดสำหรับโครงการเหล่านี้ด้วยโปรแกรมแก้ไขของคุณ! การตรวจสอบผลลัพธ์จะเปิดเผยว่า chasten ผ่านการใช้งานหรือไม่? Spookylukey/Pyastgrep ใช้นิพจน์ XPATH อย่างถูกต้องสำหรับ all-test-function-definition เพื่อค้นหาบรรทัดแรกของซอร์สโค้ดที่ปฏิบัติการได้ภายในการทดสอบแต่ละครั้งข้ามไปยังเอกสารและความคิดเห็นนำของฟังก์ชั่น
สำหรับโปรแกรม lazytracker คุณจะสังเกตเห็นว่า chasten รายงานว่ามี 6 กรณีทดสอบแม้ว่า pytest จะค้นพบเท่านั้นและทำการทดสอบ 5 นี่เป็นเพราะความจริงที่ว่าการ tests/test_tracked.py ชุดทดสอบใน lazytracker มีฟังก์ชั่นเริ่มต้นด้วย test_ ภายในฟังก์ชั่นอื่นเริ่มต้นด้วย test_ ตัวอย่างนี้แสดงให้เห็นถึงข้อ จำกัด ของการวิเคราะห์แบบคงที่ด้วย chasten ! แม้ว่าเครื่องมือที่ตรวจพบอย่างถูกต้องทั้งหมดของ "ฟังก์ชั่นทดสอบ" การทำรังของฟังก์ชั่นในชุดทดสอบหมายความว่า pytest จะเรียกใช้ฟังก์ชั่น test_ ด้านนอกและใช้ฟังก์ชัน test_ ด้านในเพื่อการทดสอบ
ด้วยที่กล่าวว่า chasten ถูกต้องพบการทดสอบแต่ละครั้งสำหรับโครงการ multicounter คุณสามารถทำตามแต่ละขั้นตอนก่อนหน้าในเอกสารนี้เพื่อใช้การ chasten กับโปรแกรม Python ของคุณเอง!
หากคุณต้องการทำให้ chasten.db เปิดเผยต่อสาธารณชนเพื่อให้ทุกคนเรียนคุณสามารถใช้คำสั่งย่อย chasten datasette-publish ตราบใดที่คุณทำตามคำแนะนำในการติดตั้ง? Simonw/Datasette-Publish-Fly และ? SimonW/Datasette-Publish-Vercel คุณสามารถใช้ปลั๊กอินเพื่อปรับใช้เซิร์ฟเวอร์ datasette สาธารณะที่โฮสต์ chasten.db ของคุณ ตัวอย่างเช่นการรันคำสั่ง chasten datasette-publish <path containing integrated results>/chasten.db --platform vercel จะเผยแพร่ผลลัพธ์จากการเรียกใช้ chasten บน lazytracker และ multicounter ไปยังแพลตฟอร์ม Vercel
ที่สำคัญการใช้คำสั่ง chasten datasette-publish ด้วยตัวเลือก --platform vercel ต้องการให้คุณทำตามคำแนะนำสำหรับปลั๊กอิน datasette-publish-vercel เพื่อติดตั้งเครื่องมือคำสั่ง vercel สิ่งนี้มีความจำเป็นเพราะแม้ว่า datasette-publish-vercel เป็นหนึ่งในการพึ่งพาของ chasten ไม่ว่าจะ chasten หรือ datasette-publish-vercel ให้เครื่องมือ vercel แม้ว่าพวกเขาจะใช้มันก็ตาม คุณต้องทำตามขั้นตอนที่คล้ายกันก่อนที่จะเผยแพร่ฐานข้อมูลของคุณเพื่อบิน!
แม้ว่า chasten จะเป็นแอปพลิเคชันบรรทัดคำสั่ง แต่คุณสร้างการสร้างอาร์กิวเมนต์และตัวเลือกบรรทัดคำสั่งของเครื่องมือผ่านส่วนต่อประสานผู้ใช้เทอร์มินัล (TUI) ในการใช้วิธีที่ใช้ TUI เพื่อสร้างบรรทัดคำสั่งที่สมบูรณ์สำหรับ chasten คุณสามารถพิมพ์คำสั่ง chasten interact
Chasten มีบันทึกระบบในตัว ในขณะที่ใช้ chasten คุณสามารถใช้ chasten log ในเทอร์มินัลของคุณ คุณลักษณะบันทึกระบบช่วยให้ผู้ใช้สามารถเห็นเหตุการณ์และข้อความที่ผลิตโดย chasten นอกจากนี้คุณลักษณะ chasten log จะช่วยในการค้นหาข้อบกพร่องและเหตุการณ์ที่นำไปสู่ข้อผิดพลาดที่เกิดขึ้น เพื่อให้โปรแกรม chasten แสดงไปยังบันทึกระบบคุณจะต้องเปิดเทอร์มินัลแยกต่างหากและใช้ chasten log นอกจากนี้สำหรับแต่ละคำสั่งที่เรียกใช้ --debug-level <choice of level> และ --debug-dest SYSLOG จะต้องเพิ่ม
ตัวอย่างเช่น chasten datasette-serve --debug-level DEBUG --debug-dest SYSLOG < database path to file> จะสร้างเอาต์พุตต่อไปนี้ในบันทึกระบบ
? chasten: Analyze the AST of Python Source Code
? GitHub: https://github.com/gkapfham/chasten
Syslog server for receiving debugging information
Display verbose output? False
Debug level? DEBUG
Debug destination? SYSLOG
ในแต่ละคำสั่งใน chasten มีตัวเลือกในการเพิ่ม --debug-level ระดับการดีบักมี 5 ตัวเลือกการดีบักข้อมูลคำเตือนข้อผิดพลาดและวิกฤต แต่ละระดับจะแสดงปัญหาที่แตกต่างกันในบันทึกระบบที่การดีบักเป็นระดับต่ำสุดของปัญหาจากอินพุตที่วิกฤตคือระดับสูงสุดของข้อผิดพลาด ในการใช้ประโยชน์จากข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้คุณสามารถอ้างอิง debug.py ไฟล์:
class DebugLevel ( str , Enum ):
"""The predefined levels for debugging."""
DEBUG = "DEBUG"
INFO = "INFO"
WARNING = "WARNING"
ERROR = "ERROR"
CRITICAL = "CRITICAL" Usage: chasten [OPTIONS] COMMAND [ARGS]...
╭─ Options ───────────────────────────────────────────────────────────────────────────────────╮
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to copy it or │
│ customize the installation. │
│ --help Show this message and exit. │
╰─────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ──────────────────────────────────────────────────────────────────────────────────╮
│ analyze ? Analyze the AST of Python source code. │
│ configure ? Manage chasten ' s configuration. │
│ datasette-publish ? Publish a datasette to Fly or Vercel. │
│ datasette-serve ? Start a local datasette server. │
│ integrate ? Integrate files and make a database. │
│ interact Interactively configure and run. │
│ log ? Start the logging server. │
╰─────────────────────────────────────────────────────────────────────────────────────────────╯
ทำตามขั้นตอนเหล่านี้เพื่อติดตั้งเครื่องมือ chasten เพื่อการพัฒนาในอนาคต:
เมื่อติดตั้ง Python และบทกวีโปรดไปที่ที่เก็บ chasten บน GitHub และติดตั้งเครื่องมือโดยใช้คำสั่ง git clone ในเทอร์มินัลของคุณ จากนั้นนำทางไปยังไดเรกทอรี chasten และเรียกใช้ poetry install เพื่อติดตั้งการอ้างอิงทั้งหมด
นอกจากนี้ยังมีตัวเลือกในการใช้ Docker เพื่อใช้ chasten
ทำตามขั้นตอนเหล่านี้เพื่อใช้ Docker:
cd ลงในไดเรกทอรี chasten ที่ตั้งอยู่ที่ Dockerfiledocker build -t chasten . เพื่อสร้างคอนเทนเนอร์docker run --rm -v "%cd%":/root/src -it chastendocker run --rm -v ${pwd}:/root/src -it chastendocker run --rm -v $(pwd):/root/src -it chastenpoetry install ประเภทคอนเทนเนอร์docker ps เพื่อดูข้อมูลการรันคอนเทนเนอร์docker commit <your-container-id> <your-image-name> เพื่อบันทึกการติดตั้งแบบพึ่งพาอาศัยกันchasten ของคุณ! Black และ Ruff บน chasten เพื่อให้แน่ใจว่ารหัสความสอดคล้องความสามารถในการอ่านและการยึดมั่นในมาตรฐานการจัดรูปแบบที่กำหนดไว้ล่วงหน้าทั่วทั้งโครงการเพิ่มความสามารถในการบำรุงรักษาและการทำงานร่วมกันในหมู่นักพัฒนาpoetry run task fiximports และ/หรือ poetry run task fixformat ก่อนจัดส่งคุณสมบัติใหม่ หากคุณสมบัติถูกส่งไปพร้อมกับปัญหาผ้าสำลีงานสร้างจะแตกหักบน GitHub เนื่องจากความล้มเหลวของชุดทดสอบPytest และ Hypothesis ซึ่งช่วยให้เราสามารถเสริมสร้างความสอดคล้องของรหัสความสามารถในการอ่านและการจัดแนวกับมาตรฐานการจัดรูปแบบที่กำหนดไว้ตลอดทั้งโครงการ เมื่อเขียนกรณีทดสอบสำหรับคุณสมบัติให้สร้างไฟล์ใหม่ในไดเรกทอรีการทดสอบด้วยการตั้งชื่อการประชุม test_(name of file)poetry run task test สำหรับกรณีส่วนใหญ่หรือหากคุณต้องการทดสอบคุณสมบัติที่ใช้ OpenAI API poetry run task test-api ก่อนการจัดส่ง หากมีการจัดส่งคุณสมบัติโดยไม่มีชุดทดสอบความครอบคลุมจะลดลงใน GitHub เนื่องจากการเพิ่มรหัสที่ยังไม่ผ่านการทดสอบและอาจนำไปสู่ปัญหาที่ใหญ่กว่าในอนาคต Chasten และ Symbex ซึ่งสร้างโดย Simon Willison เป็นเครื่องมือทั้งสองที่ออกแบบมาสำหรับการวิเคราะห์ซอร์สโค้ด Python โดยเฉพาะอย่างยิ่งการมุ่งเน้นไปที่การค้นหาฟังก์ชั่นและคลาสภายในไฟล์ ในขณะที่พวกเขาแบ่งปันเป้าหมายร่วมกันมีความแตกต่างที่โดดเด่นระหว่างทั้งสองโดยเฉพาะอย่างยิ่งในแง่ของอินเทอร์เฟซบรรทัดคำสั่งและฟังก์ชั่น
ในแง่ของอินเทอร์เฟซบรรทัดคำสั่ง Symbex ใช้ CLI ที่กระชับโดยใช้ตัวย่อสำหรับตัวเลือกต่าง ๆ ตัวอย่างเช่นคำสั่งเพื่อค้นหาลายเซ็นฟังก์ชั่นในไฟล์ชื่อ test_debug.py มีดังนี้:
command : symbex - s - f symbex / test_debug . py
def test_debug_level_values ():
def test_debug_level_isinstance ():
def test_debug_level_iteration ():
def test_debug_destination_values ():
def test_debug_destination_isinstance ():
def test_debug_destination_iteration ():
def test_level_destination_invalid ():
def test_debug_destination_invalid ():ในทางกลับกัน Chasten ใช้ประโยชน์จากแพ็คเกจ Python เช่น Typer และ Rich เพื่อให้อินเทอร์เฟซบรรทัดคำสั่งที่ใช้งานง่ายและมีคุณสมบัติ คำสั่งที่มีอยู่สำหรับ chasten รวมถึง:
ในแง่ของฟังก์ชั่น Symbex ได้รับการออกแบบมาเพื่อค้นหารหัส Python สำหรับฟังก์ชั่นและคลาสตามชื่อหรือ Wildcard มันให้ความสามารถในการกรองผลลัพธ์ตามเกณฑ์ต่าง ๆ รวมถึงประเภทฟังก์ชัน (async หรือ non-async) การมีเอกสารการมองเห็นและคำอธิบายประกอบประเภท
ในทางกลับกันคำสั่ง analyze ของ Chasten ดำเนินการวิเคราะห์ AST ในซอร์สโค้ด Python ช่วยให้ผู้ใช้สามารถระบุชื่อโครงการรุ่น XPath เส้นทางการค้นหาและเกณฑ์การกรองต่างๆ Chasten รองรับการตรวจสอบการรวมและการยกเว้นตามแอตทริบิวต์ค่าค่าและจับคู่ระดับความมั่นใจ เครื่องมือนี้ยังมีตัวเลือกการกำหนดค่าที่กว้างขวางและความสามารถในการบันทึกผลลัพธ์ในรูปแบบที่แตกต่างกันรวมถึง Markdown
โดยสรุปในขณะที่ทั้ง Chasten และ Symbex ให้บริการจุดประสงค์ทั่วไปในการวิเคราะห์ซอร์สโค้ด Python, Chasten นำเสนอ CLI ที่หลากหลายและใช้งานง่ายมากขึ้นพร้อมคุณสมบัติเพิ่มเติมของการกำหนดค่าและการจัดการผลลัพธ์ ในทางกลับกัน Symbex ใช้ CLI ที่กระชับโดยมุ่งเน้นที่การค้นหาและการกรองฟังก์ชันการทำงาน ตัวเลือกระหว่างเครื่องมือทั้งสองขึ้นอยู่กับการตั้งค่าของผู้ใช้และข้อกำหนดเฉพาะสำหรับการวิเคราะห์รหัส Python
นอกเหนือจาก Chasten และ Symbex แล้วเครื่องมืออื่น ๆ อีกหลายตัวยังมีความสามารถที่ไม่ซ้ำกันสำหรับการวิเคราะห์และค้นหาผ่านซอร์สโค้ด Python แต่ละรายการจัดเลี้ยงไปยังกรณีการใช้งานเฉพาะ