ep6 python : understand python ไม่ได้แปลว่าคุณเข้าใจไพธอนไหม มันแปลว่า...

Programming Nov 27, 2013

understand python ไม่ได้แปลว่าคุณเข้าใจไพธอนไหม มันแปลว่า...

เราใช้โปรแกรม understand กับ python API อย่างไร

ก่อนอื่นเลย มาแนะนำโปรแกรม understand ดีกว่า ว่าคือโปรแกรมอะไร
understand คือโปรแกรมจัดการ database ของ source code ของเรา มันจะ analyse code ของเราออกมาเป็น database ตัวนึง ซึ่งเราจะต้องใช้ python API จัดการมันต่อไป ซึ่งสามารถศึกษาข้อมูลเพิ่มเติมได้จากในเว็บเขานะคะ โดยตัวโปรแกรมนั้น เป็น trial download ซึ่ง free 15 วันนะคะ

เมื่อเรา download โปรแกรม understand มาใช้เลย ต้องตรวจสอบเครื่องเราด้วยว่า เราใช้ python version อะไร ซึ่ง understand รองรับ python 3.x ขึ้นไปคะ

มาเริ่ม install ส่วนที่เราจะต้องใช้งานร่วมกับ understand นะคะ

  • เปิดหา directory "SciTools/bin/<SYSTEM>/python" ตัวอย่าง C:/Program Files/SciTool/bin/pc-win32/python และจะเจอ understand.pyd ในนั้น
  • จากนั้น เข้าไปที่ Control Panel -> System and Security -> System หรือเข้า computer แล้วคลิกขวาที่ properties เลือก Advanced system setting กดที่ Environment Variables... เพิ่ม Understand ใน path แล้วใส่ directory ของ python (C:/Python33) และของ understand ลงไป (C:/Program Files/SciTool/bin/)
  • ตั้ง Environment Variables ชื่อ PYTHONPATH มีค่าเป็น C:/Program Files/SciTool/bin/pc-win32/python หรือ เข้า cmd พิมพ์ set PYTHONPATH=%PYTHONPATH%;C:\Program Files\SciTools\bin\pc-win32\python
  • จากนั้นเข้าไปที่ program understand สร้าง project ใหม่ เลือก folder source file แล้วกดให้ program analyse ข้อมูล source code ออกมาเป็น database (.udb) จากนั้นปิดโปรแกรม understand (หมดประโยชน์แล้วแก หึหึ~~~~)
  • เปิด python shell ขึ้นมา ลอง import understand ดู แต่ถ้าไม่ได้หล่ะ จะทำอย่างไร
    --> ใช้โปรแกรม Dependency Wallker มาตรวจสอบ open ไฟล์  C:/Program Files/SciTool/bin/pc-win32/python/understand.pyd จากนั้นรอแปปนึง พบว่าจะมีไฟล์ .dll บางอันที่ไม่มีให้ถูกเรียก (อันที่เป็นวงกลมเครื่องหมายคำถามสีเหลือง) จึงทำให้ใช้งานไม่ได้ ต้องหาโหลดมาใส่ใน system32
  • เมื่อได้มาครบแล้ว กด F5 ที่โปรแกรมเพื่อให้ประมวณผลใหม่ จะพบว่าตัวที่ขึ้นวงกลมเครื่องหมายคำถามสีเหลืองหายไป สามารถใช้งาน import understand ได้แล้ววววว

เมื่อใช้ได้แล้ว มาดูการใช้งานคร่าวๆกันก่อนดีกว่าคะ

import understand
#เปิด database มาอ่าน
db = understand.open("test.udb")

#จะแสดงข้อมูลใน database ที่ถูก sort ไว้แล้ว
for ent in sorted(db.ents(), key = lambda ent: ent.name()):
    print(ent.name(), " [",ent.kindname(), "]", sep = "", end = "\n")

หรือ บอกว่าตัวแปรนี้ ถูกใช้ที่ไหน เรียกที่ไหน มีการกำหนดค่าที่ใด ประเภทตัวแปรเป็นอะไร โดยจะบอกเป็นชื่อไฟล์ บรรทัด และคอลัมน์

import understand

db = understand.open("test.udb")

for ent in db.ents("Global Object ~Static"):
  print (ent,":",sep="")
  for ref in ent.refs():
    print (ref.kindname(),ref.ent(),ref.file(),"(",ref.line(),",",ref.column(),")")
  print ("\n",end="")

**อ่านเพิ่มเติมได้ที่ manual ของเขานะคะ

ในวันนี้มีมานำเสนอแต่เพียงเท่านี้ คราวหน้าจะเป็นอะไรติดตามชมนะคะ สวัสดีคะ :)

Tags

Minseo Chayabanjonglerd

I am a full-time Android Developer and part-time contributor with developer community and web3 world, who believe people have hard skills and soft skills to up-skill to da moon.