2009-04-09

Supply Help tool for hacking source-code :: Source-code browser

หลังจากที่ลองนั่งหัดเขียนภาษา C ไปได้สักพัก เลยลองแกะซอสต์โค้ดของโปรแกรม wifidog แบบเล่นๆ ดู แต่ปรากฏว่าเกิดอาการงง กับการอ้างอิงฟังก์ชั่นเชื่อมต่อครั้นจะมานั่ง map โดยการใช้มือ จดในกระดาษเอา ไม่ไหวแน่ ถ้าโปรแกรมมีขนาดใหญ่เลยอยากได้ tool มาช่วย
Tool ประเภทนี้เรียกว่า "Source code browsing Tools" ช่วยสำหรับ track sourceประหยัดเวลาไปได้มากโข ( หาตั้งนานเหมือนกันเพราะไม่รู้ชื่อโปรแกรมประเภทนี้เรียกว่าอะไร ) สำหรับ Linux ตอนนี้เข้าไปดูได้ที่
#GNU Software Global
http://www.gnu.org/software/global/links.html
#Source-code browsing tools :: Opensolaris project
http://www.opensolaris.org/os/project/opengrok/
แต่ตอนนี้ยังไม่ไดทำการ คอนฟิก Opengrok ไว้วันหลังทำเสร็จแล้วจะเอามาส่งต่อให้อีกทีหนึ่ง เนื่องจากอยากลองใช้ command-line ต่างๆ ที่มีของ GNU ให้คล่องแล้วลองเทียบข้อดีข้อเสีย กับความถนัดของตัวเอง ดู
GNU cflow เป็น tool command-line สำหรับ map source สามารถนำเอาผลลัพธ์ไปแสดงผลในโปรแกรมอื่นได้ ** คนละตัวกับ cflow apt-get นะครับ ftp://download.gnu.org.ua/pub/release/cflow/
cscope command-line tool สำหรับทำการ ค้นหา function ในไฟล์ source-code ตัวนี้ยังไม่ได้ลองเล่นเพราะไม่ถนัด regexp เลยข้ามไปก่อน apt-get install cscope
kscope KDE frontend ของ cscope ทำงานร่วมกับ ctags เป็น editor ในตัวได้ด้วยเหมาะกับโปรแกรมขนาดเล็กๆ ( ในความคิดผมนะ ) เพราะ การ link ข้ามกันเพื่อทำการแก้ไข หรือ ไปดูยังไฟล์ต่างๆ ยังช้าไปหน่อย โดยรวมถือว่า Ok. apt-get มา โปรแกรมจะติดตั้ง cscope มาให้ด้วยapt-get install ctags kscope
ctags tool สำหรับ tagging C ไฟล์ สนับสนุนหลายภาษา และ เอาไปใช้กับ editor หลายตัวได้เช่น Vim เป็นต้น http://ctags.sourceforge.net/
** NCC ncc - The new generation C compiler ตัวนี้น่าสนใจมาก ใช้งานได้ดี สามาถนำเอาoutput ไป generate เป็น graph เพื่อแสดงผลได้ feuture มันรวมเอาทั้ง ctags,cscope มาไว้ด้วยกันทำให้ ง่านต่อการใช้งาน


----------------------
#HomePagehttp://students.ceid.upatras.gr/~sxanth/ncc/#Downloadhttp://students.ceid.upatras.gr/~sxanth/ncc/ncc-2.6.tar.gz
โปรแกรมมีสองส่วนคือ ตัว complier ( gen output ) ncc และตัว viewer nccnavi
**ถ้าโปรแกรมขนาดใหญ่มากๆ ให้ใช้ออปชั่น make ไปเลยดีกว่า ทำทีเดียวท้งแผงเลย
#Usage!
udomsak#mkdir ~/project/svn
udomsak#svn checkout https://dev.wifidog.org/svn/trunk/wifidog
udomsak#cd ~/project/svn/wifidog
udomsak#./configure
udomsak#make CC="ncc -nccout" [ option to generate extension .nccout file per file ]
udomsak#find -name "*.nccout" -exec cat {} >> wifidog-all.map \;
udomsak# nccnav wifidog-all.map
#If error occut can use make -i for ignore :)
** Options ที่เหลืออ่านใน README เพิ่มเติมได้ครับ
#When NCC runing !



#use NCC to list functions in file and track call by and calling function


#I use "GNU cflow" to generate ASCII art or graph too.




#Graph generate program
http://www.csn.ul.ie/~mel/projects/codeviz/
and
http://www.graphviz.org/
#install graphviz
apt-get install graphviz
#convert GNU cflow to "dot format" use by 'dot' program like to generate chart
http://cflow2vcg.sourceforge.net/
udomsak# cd mysrc
#generate per file mapping
udomsak#for i in *.c ; do cflow --format=posix --omit-arguments --level-indent='0=\t' --level-indent='1=\t' --level-indent=start='\t' $i tee $i.map ; done
#If want all 'C' file make Overall project graph
udomsak#for i in *.map ; do cat $i ~/bin/cflow2dot tee $i.dot ; done
#Use 'dot' program to generate graph " dot -T[language] -o [ output ] [ input file]"
udomsak# dot -Tsvg Overview.dot -o Mymap.svg
#Thank you for FOSS and GNU for program tool :-)~

No comments: