- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah - ·vodnφ strßnka -

LinuxovΘ noviny 06/98

Source Navigator

Karel «ßk, 9. Φervna 1998

Pokud se u GRASPu zmi≥uji o tom, ╛e se hodφ i pro psanφ mal²ch progrßmk∙, tak Source Navigator (SN) bych za°adil do p°esn∞ opaΦnΘ kategorie IDE program∙. Pochopiteln∞ i SN lze pou╛φt na psanφ n∞kolika mßlo °ßdek, ale pravd∞podobn∞ p°i n∞m nevyu╛ijete v╣echny jeho mo╛nosti a jak dßle uvidφme, bylo by to tak trochu jako pou╛φvat "d∞lo na komßry".

Verze kterou jß pou╛φvßm je tzv. "lite version", tuto lze zφskat na http://www.cygnus.com. Jejφ omezenφ (na kterΘ jsem narazil) je neochota pracovat s projekty o vφce ne╛ 50 000 °ßdkßch. Zßjemc∙m o plnou verzi sßm SN napovφ hned p°i spu╣t∞nφ, kam se obrßtit a pro koho si dolßrky p°ipravit (ano, ano, ╛ßdnΘ GNU).

SN je kompletnφm prost°edφm pro v²voj jednφm v²vojß°em (nap°. program C-Forge to umφ i pro t²m v²vojß°∙ rozeset²ch po sφti, ale o tom a╛ n∞kdy p°φ╣t∞). SouΦßstφ balφku je mana╛er projekt∙, mana╛er soubor∙ a funkcφ, interface pro debugger a make a hlavn∞ editor. V╣e je velice snadno a r∙znorod∞ konfigurovatelnΘ.

SN umφ aplikovat v╣echny svΘ mo╛nosti na Tcl, Javu, Fortran, Cobol, C/C++, asm. Ke v╣em jazyk∙m je mo╛no nastavit i externφ editor a specifikovat koncovky soubor∙. Bohu╛el k C++ a C p°istupuje stejn∞. Mo╛nß by nebylo od v∞ci, pokud je editovßn soubor.c, nenutit programßtorovi na pracovnφ plochu nßstroje na prßci s objekty, ale uvidφme, v╣e se vyvφjφ.

Jak je dobr²m zvykem, p°istupuje i SN k psanφ program∙ jako k tvorb∞ projekt∙. Projekt je mo╛nΘ vytvo°it i z existujφcφch soubor∙. K tomu slou╛φ n∞co co lze nazvat mana╛erem projekt∙. Zde je mo╛nΘ p°idßvat a ubφrat adresß°e, soubory do projektu, ale i spojovat projekty atd. P°i vytvo°enφ projektu ud∞lß SN v urΦenΘm adresß°i jeden soubor a adresß°, ve kter²ch si udr╛uje databßze o zdrojovΘm k≤du. Pro ka╛d² projekt lze vytvo°it specielnφ nastavenφ v╣eho nastavitelnΘho. Tedy krßtce:

  • barvy a fonty pro asi 40 druh∙ text∙ (nap°. komentß°e, deklarace, ...), oken a menu
  • tisk
  • HTML viewer
  • bug report
  • debugger
  • make
  • version control system (v²b∞r s RCS, CVS, SCCS).
  • tvorba zßloh (.bak)
  • automatickΘ zarovnßvßnφ
  • p°evod tabulßtor∙ na mezery
  • nastavenφ cache
  • a je╣t∞ moc a moc v∞ciΦek...

[ Source Navigator ]

Po vytvo°enφ projektu se objevφ n∞co jako mana╛er soubor∙. Ten je schopen zobrazovat bu∩ seznam soubor∙ nebo velice p∞kn² seznam funkcφ (na obrßzku). Prßv∞ schopnost zachßzet s projektem z hlediska funkcφ a ne jen soubor∙ je velice efektivnφ. Programßtor pak u╛ nemusφ p°em²╣let, kde v jakΘm souboru je jakß funkce, ale jen v seznamu funkcφ, kter² lze t°φdit dle nastavitelnΘho filtru, najφt tu pravou a editovat.

[ Editor SN ]

Editor v sob∞ sdru╛uje hned n∞kolik hezk²ch nßstroj∙ (n∞kterΘ lze volat i z mana╛era soubor∙). Editor je schopen zarovnßvat, zv²raz≥ovat klφΦovß slova, kopφrovat, zachßzet s bloky a hlavn∞ umo╛≥uje hledat a hledat (v aktußlnφm souboru nebo v celΘm projektu).

Pokud kliknete prav²m tlaΦφtkem my╣i na jakoukoliv funkci nebo prom∞nnou, editor vßm nabφdne menu, pomocφ n∞ho╛ se p°emφstφte na implementace nebo deklarace danΘ funkce nebo prom∞nnΘ. Nevφte-li tedy, co to je nap°. za polo╛ku blabla ve struktu°e n∞co, staΦφ kliknout na n∞co->blabla a podφvat se, kde a co a jak je ve va╣em projektu spojeno s touto polo╛kou. V hornφ Φßsti editoru je op∞t p°φstupn² seznam se v╣emi objekty, prom∞nn²mi, makry a funkcemi. Dßle pak seznam toho, co bylo naposledy hledanΘ. Aby se v²vojß° p°i prßci neztratil, jsou dostupnß i tlaΦφtka (╣ipky) back/forward, kterΘ vßs vrßtφ na va╣i p°edchozφ/nßsledujφcφ pozici v projektu.

Editor umo╛≥uje i jinß zobrazenφ ne╛ jen klasickΘ (zßlo╛ka Edit) zobrazenφ (textu) k≤du. Na ostatnφch zßlo╛kßch je mo╛nΘ zachßzet s Class, Retriever, Hierarchy (bohu╛el pro svou nedotΦenost C++ tuto Φßst jaksi taktn∞ vynechßm, ale z hlediska koncepce SN lze p°edpoklßdat, ╛e i tato oblast je zde velice dob°e propracovanß) a pak (a to se mi moc lφbφ) zßlo╛ky Xref a Include.

[ Xref SN ]

V Xref je mo╛nΘ nechat si dle nastavenΘ hloubky vno°enφ doslova nakreslit jakΘ funkce a prom∞nnΘ jsou volßny a pou╛ity v danΘ funkci. Tak nap°. na dal╣φm obrßzku je znßzorn∞no, ╛e funkce init_tree volß funkci rec_tree a u obou funkcφ i pou╛itΘ prom∞nnΘ. Prakticky tak lze ud∞lat mapu vzßjemn²ch provßzanostφ funkcφ v celΘm programu, pokud jako zaΦßtek nastavφte main() a levels dostateΦn∞ velk² (a procesor mßte dostateΦn∞ v²konn²). Pochopiteln∞ je mo╛nΘ se kliknutφm p°emφstit do danΘ funkce. Include umo╛≥uje to samΘ, ale u soubor∙. Pou╛itφ zßlo╛ky Grep je myslφm jasnΘ.

SN, jak u╛ zazn∞lo, mß i interface pro debugovßnφ. Jako debugger pou╛φvß defaultn∞ gdb. Aktußln∞ provßd∞n² k≤d zobrazuje SN v okn∞ editoru, debugovat lze prakticky bez psanφ p°φkaz∙ na p°φkazovou °ßdku gdb - staΦφ jen klikat. V tomto mne SN n∞jak neoslovil a kvalitou ho pravd∞podobn∞ p°edΦφ DDD. Jß osobn∞ rad∞ji pou╛φvßm samotnΘ gdb.

P°evratnΘ nenφ ani rozhranφ pro make. Obsahuje v╣e co lze standardn∞ oΦekßvat (ukazovßnφ na chyby odhalenΘ p°i kompilaci, nastavenφ parametr∙ pro make atd.).

Co mi u SN chybφ - a je nap°. u Emacsu - je skr²vßnφ podmφn∞n∞ kompilovan²ch Φßstφ k≤du dle direktiv #ifdef (bylo v emacsu p∞kn∞ p°edvedeno na Cikhßji). Dal╣φ trochu nep°φjemnou v∞cφ je doba uklßdßnφ soubor∙ - SN si toti╛ znova vytvß°φ databßze informacφ o zdrojovΘm k≤du a to trochu trvß.

To je velice zhruba v╣e. Pravd∞podobn∞ jsem vynechal mnoho detail∙, kterΘ SN umo╛≥uje, ale to nenφ nßplnφ Linuxov²ch novin, to se musφ za╛φt p°i prßci s SN. Na zßv∞r lze °φci, ╛e se jednß o velice dobr² IDE software i pro opravdu velkΘ projekty, kter² by bylo zajφmavΘ vid∞t v plnΘ verzi (na domovskΘ strßnce ho majφ vyfocen² v ·hlednΘ, ale bohu╛el typicky komerΦnφ krabici) a vnutit mu nap°. cel² kernel Linuxu - a jß myslφm, ╛e i s takov²m balφkem zdrojßk∙ by bez v∞t╣φch problΘm∙ pracoval pro zdar svΘho majitele. *


- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah - ·vodnφ strßnka -