Ini adalah perintah mppg yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa stasiun kerja online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
makeppgraph -- Analisis grafis dari grafik ketergantungan
DESKRIPSI
?: -?, A: -SEBUAH,
--args-file,
--argumen-file, B: -B,
--karena,
--build-alasan, C: &cwd, D: -D,
-D,
--ketergantungan,
&dir,
--dot,
--turun,
--ke bawah, G: -G,
--grafik, H: -H,
--Tolong,
&rumah,
--html, I: -SAYA,
-Saya,
--termasuk,
--termasuk-dir,
--termasuk, L: -aku,
--catatan,
--file log, M: -M,
-M,
&makepp,
$MAKEPPGRAFFLAGS,
--menggabungkan,
--modul, O: -Hai,
--keluaran, P: -P,
--polos, R: -R,
--ganti nama, S: -S,
--arah-terpisah,
&suf, T: -T,
--teks, U: -kamu,
--ke atas,
--ke atas,
& kami, V: -V,
--Versi: kapan
makeppgraph [ Option ... ] [ belt hold ... ]
mppg [ Option ... ] [ belt hold ... ]
Mereka mengatakan "Sebuah gambar bernilai seribu kata". Jadi mari kita gambar ketergantungan Anda atau sertakan
grafik dari berbagai sudut pandang. Lihat galeri
<http://makepp.sourceforge.net/gallery/> untuk mendapatkan beberapa ide tentang apa yang dapat Anda lakukan.
Setiap node mewakili file sumber atau target, diwarnai sesuai dengan pola nama file.
Node file berbentuk persegi panjang. Node target palsu berbentuk oval. Setiap tepi padat mewakili
ketergantungan langsung. Sebagai alternatif atau tambahan, Anda dapat menampilkan hubungan sertakan sebagai
garis titik titik. Untuk tampilan tekstual yang lebih detail tetapi tidak begitu cantik, lihat makepplog.
Namun berhati-hatilah, bahkan untuk bangunan kecil, kerumitannya bisa mengejutkan! Hal ini karena dengan
.o file dan sistem termasuk Anda dengan mudah memiliki dua kali lebih banyak node sebagai file sumber. Tetapi
itu bukan apa-apa -- jumlah edge sering kali jauh melebihi jumlah node, karena banyak
menyertakan pernyataan. Tata letak bebas persimpangan biasanya tidak mungkin.
Dalam proyek nyata, kerumitannya menjadi gila. Teknik seperti sumber berbasis template
pembuatan file, praprosesor (misalnya SQL tertanam, bahasa definisi antarmuka, Qt
perpustakaan) atau penerbitan file ke direktori pusat (misalnya hanya memiliki satu "-I" atau "-L"
option) membuat grafik meledak. Bahkan jika tepinya hanya selebar satu piksel, Anda akan mendapatkan
garis-garis hitam lebar yang saling bersilangan.
Setelah Anda menyadari apa yang sebenarnya terjadi, jika Anda beruntung, Anda mungkin dapat menemukan cara untuk
menyederhanakan pengaturan build Anda. Tetapi sebelum Anda sampai di sana, Anda harus secara drastis mengurangi
jumlah informasi yang Anda tampilkan. Untuk itu ada berbagai pilihan, rename dan
menggabungkan kemungkinan dalam "makeppgraph". Ketika Anda gagal mencapai keseimbangan antara
mengurangi grafik sejauh ini sehingga dapat ditampilkan dengan masuk akal, sambil tetap menunjukkan apa
Anda ingin melihat, Anda mungkin jatuh kembali ke grafik tekstual.
KELUARAN FORMAT
Tata letak, tampilan, dan manipulasi grafik adalah tugas kompleks, yang berada di luar cakupan
"makeppgraph". Alih-alih menghasilkan file input untuk alat khusus. Ini menciptakan sebuah
file output mengganti atau menambahkan sufiks yang sesuai ke file input pertamanya. Jika itu
is .makepp/log, default, file output akan melewati .makepp direktori, mengarah ke
log.udg. Jika input pertama adalah - (stdin), output masuk ke stdout.
uDraw(Grafik)
Dengan uDraw(Grafik)http://www.informatik.uni-bremen.de/uDrawGraph/> Anda mendapatkan cukup
GUI modern, yang memungkinkan untuk memilih orang tua atau anak-anak, menemukan ujung lain dari suatu keunggulan, atau
sembunyikan subgraf. Menyesuaikan opsi seperti jarak simpul, dan menggunakan splines untuk tepi
dapat membuat grafik lebih cantik.
Meskipun fitur di atas menjadikan ini alat yang sangat berguna, ada beberapa fitur kecil
halangan:
· Ini sangat haus memori, sehingga, setelah meditasi panjang, mungkin crash tanpa
setelah menampilkan apa pun -- tanda yang jelas bahwa Anda harus mengurangi jumlah node
dan/atau tepi lebih jauh.
· Ini sangat memisahkan atribut grafik dan opsi tampilan. Ini berarti Anda tidak bisa
dimasukkan ke dalam grafik yang dihasilkan fakta bahwa itu harus berorientasi ke samping (yaitu
umumnya diperlukan di sini karena, bahkan ketika diubah namanya menjadi sesuatu yang pendek, nama file adalah
jauh lebih lebar daripada tinggi). Sebagai solusinya, jika Anda tidak ingin menjadikannya default, atau
pilih orientasi dari menu setiap kali, mereka mengusulkan skrip starter kecil:
ekspor UDG_HOME=/where/ever/uDrawGraph-3.1
TMP=`mktemp -t udg.XXXXXX` || keluar 1
perangkap "rm -f $TMP" KELUAR
echo "[menu(file(open_graph(\"${1-log.udg}\"))),menu(layout(orientation(left_right)))]" >$TMP
$UDG_HOME/bin/uDrawGraph -init $TMP
· Belum mendukung warna batas simpul. Karena "--karena" ini menampilkan ganda
berbatasan saat seharusnya berwarna merah.
· Saat menggabungkan beberapa file menjadi satu node mengarah ke tepi sendiri keduanya dengan
"--dependencies" dan "--include", hanya satu yang akan ditampilkan, secara acak
putus-putus atau ditarik melalui dan dengan label "2*".
Graphviz
grafikhttp://www.graphviz.org/> terdiri dari beberapa alat baris perintah, yang memungkinkan
lebih banyak format ekspor daripada uDraw(Graph). Itu tidak hanya mencakup format gambar statis
tetapi juga masukan untuk program desainer seperti dia. Ada utilitas "twopi" untuk membuat a
tata letak radial, yang bagus jika grafik Anda mendekati pohon yang benar, yaitu Anda
dependensi menyebar, tetapi beberapa node memiliki dependensi yang sama dengan yang lain. Ada beberapa
pemirsa tersedia, tidak ada yang membantu Anda menavigasi di sepanjang struktur grafik:
Dotty
Alat tampilannya sendiri, dotty, memiliki keunggulan dibandingkan uDraw(Graph) yang bisa Anda dapatkan dengan bebas
seret node, tanpa dibatasi ke level yang ditetapkan oleh tata letak. Kapan
layar Anda penuh dengan tepi, menyeret satu simpul memberi Anda kesan yang bagus tentang di mana
tepi simpul itu mengarah ke. Tapi itu juga kehilangan informasi saat Anda memodifikasinya.
Selain itu, ini adalah alat Xlib kuno. Ini juga menampilkan sedikit mengganggu
lingkaran di tengah setiap tepi, dan sepertinya tidak ada pilihan untuk menghilangkannya.
Penampil ZGR
ZGRViewerhttp://zvtm.sourceforge.net/zgrviewer.html> dapat diunduh secara terpisah
Penampil Java yang memiliki zoom dan panning yang nyaman. Grafik hanya dapat dilihat, tidak
perpindahan node. Ada lima tombol di area tampilan, yang menawarkan tambahan
variasi zoom semi-3D yang mewah, tetapi, tidak seperti fungsi dasarnya, mereka dapat
sangat lambat tergantung pada pengaturan Java Anda. Untuk Sun Linux Java saya, berikut ini
memberikan dorongan yang luar biasa:
ekspor J2D_PIXMAPS=berbagi USE_DGA_PIXMAPS=1
Grappa
Grappa adalah penampil Java 1.2 yang dapat diunduh secara terpisah. Tidak ada kulit pembungkus
skrip, toples tidak berisi manifes, tidak ada sumber yang berisi fungsi utama, dan
dengan appletviewer itu menghasilkan dua jendela tinggi yang digantung dengan "applet awal"
pesan, jadi saya tidak tahu cara menguji ini. Ini dapat dicoba di situs web demo sebagai
apel.
Memilih tepi membuatnya menjadi merah tebal, sehingga Anda dapat menggulir ujung lainnya secara manual ke dalam
melihat tanpa kehilangan itu dari pandangan. Selain itu dan memperbesar dan menghapus node
tampaknya tidak memiliki fitur yang berguna. Itu mengabaikan warna heksadesimal yang valid
spesifikasi.
SVG SVG, salah satu jenis file yang dapat diekspor oleh backend, sudah cukup lama. Tetapi beberapa
browser masih memiliki masalah dengan itu. Saat menyematkannya dengan tag objek hanya Opera
skala itu, yang lain klip itu, yang tidak berguna untuk thumbnail. Jika dilihat sebagai
dokumennya sendiri, hanya Opera dan Konqueror yang mengizinkan penskalaan, sementara Firefox menskala
hanya label. Meskipun labelnya berupa teks, tidak ada browser yang dapat mencarinya.
IE6 tidak memiliki petunjuk, kecuali Anda menginstal plugin. Aplikasi khusus, seperti
Inkscape, dapat melayani Anda dengan lebih baik.
HTML
Ini adalah format pohon daftar sederhana yang tidak berurutan yang dapat digunakan dengan browser apa pun. Anda
harus memiliki JavaScript dan CSS, yang memungkinkan melipat subpohon dan melihat warna. Biasanya
grafik Anda tidak akan menjadi pohon, yang dikerjakan dengan mengulang simpul di setiap subpohon
diperlukan, tetapi sebagai tautan ke kemunculan pertama di mana Anda dapat melihat semua atributnya. Jatuh tempo
untuk dukungan Unicode terbatas IE, panah vertikal digunakan untuk menyertakan hubungan, sebagai gantinya
dari panah putus-putus biasa.
Tekstual Grafik
Ini adalah format berbasis lekukan sederhana yang dapat digunakan dengan penampil teks apa pun. Ini
berarti Anda biasanya dapat mempelajari grafik yang jauh lebih besar dibandingkan dengan format lain. Di Emacs Anda
dapat menggunakan garis besar dan lipatan untuk navigasi grafik yang sangat kuat dengan pembungkus kecil ini
mode:
(tentukan mode turunan teks, mode grafik, mode garis besar "Grafik"
(mode tampilan)
(set (make-local-variable 'outline-regexp) " *.")
(set (make-local-variable 'outline-level)
(lambda () (/ (- (akhir pertandingan 0) (pertandingan-awal 0) -1) 2)))
(set (make-local-variable 'outline-font-lock-keywords)
'(("^ *\\(?:{[az,]+} \\)?\\([^{\n]+\\)" (1 (outline-font-lock-face) nil t) )))
(setq imenu-ekspresi-generik
'((nihil "^ *\\(?:{[az,]+} \\)?\\(.+?\\)\\(?:{[az,]+}\\)?$" 1))))
Garis dapat memiliki anotasi yang dipisahkan koma di antara tanda kurung, kecuali jika Anda juga memberikan
opsi "-p, --plain". Ketika ini datang sebelum target mereka berhubungan dengan hubungan
dengan induknya, yaitu baris sebelumnya menjorok lebih sedikit. Ketika mereka mengejar target,
mereka berkaitan dengan target itu sendiri. Mereka adalah sebagai berikut:
karena
Ketika ini datang sebelum target, orang tua dibangun karena yang ini. Kapan itu
datang setelah, target memiliki beberapa alasan yang melekat untuk dibangun kembali.
bidirectional
Ketergantungan atau penyertaan ini berjalan dua arah.
memasukkan
Induk menyertakan file ini. Anotasi ini hanya diberikan ketika juga menunjukkan
ketergantungan.
palsu
Ini adalah target palsu.
ulang
Informasi tentang target ini dan anak-anaknya sudah diberikan sebelumnya.
PILIHAN
Jika Anda tidak memberikan pola, makeppgraph akan mulai beroperasi dengan semua node yang dapat dibuat
ekstrak dari log makepp. Ketika diberikan satu atau lebih pola (menggunakan "?", "*", "**" dan/atau
"[...]"), itu akan cocok dengan yang ada di sistem file dan beroperasi pada apa pun yang juga terjadi di
catatan. Untuk ini, secara default akan memilih "ke atas", yaitu semua target yang bergantung pada
dan/atau menyertakan salah satu dari mereka dan "ke bawah", yaitu semua target dan/atau sumber, yang salah satu dari:
mereka tergantung pada dan/atau termasuk. (Arahnya metaforis, karena grafiknya adalah
paling baik ditampilkan dari kiri "atas" ke kanan "bawah" karena lebar node.)
-A nama file
--args-file=nama file
--argumen-file=fnama ile
Baca file dan uraikan seperti yang mungkin dikutip spasi-dan/atau dipisahkan baris baru
Pilihan.
-b
--karena
--membangun-alasan
Jika sebuah simpul dibangun kembali karena ketergantungan, maka tepi itu ditampilkan dengan warna merah. Sayang
makepp menerapkan pengoptimalan untuk mendeteksi kapan target perlu dibangun kembali, sehingga
sering tidak dapat mengatakan file mana yang memicu pembangunan kembali. Jika node dibangun kembali untuk a
alasan tidak dikaitkan dengan file lain, maka batas simpul berwarna merah. Dengan
uDraw(Graph) perbatasan ganda digunakan sebagai gantinya, karena tidak mendukung warna perbatasan.
-D
--dependensi
Gambarlah grafik hubungan ketergantungan yang ditentukan oleh makepp. Ini defaultnya
kecuali "-i, --includes" juga diberikan.
-d
--turun
--ke bawah
Opsi ini hanya bermakna jika Anda memberikan satu atau lebih pola. Itu hanya akan
pilih target dan/atau sumber yang bergantung pada file yang cocok, atau yang mereka
termasuk.
-g
--grafik
--dot
Menghasilkan Graphviz .dot file, alih-alih uDraw(Graph) default .udg file.
-h
--html
Menghasilkan browser . Html file, alih-alih uDraw(Graph) default .udg file.
-?
--membantu
Cetak ringkasan singkat dari opsi.
-I direktori
--termasuk=direktori
--termasuk-dir=direktori
Add direktori ke Perl memuat jalur @INC.
-i
--termasuk
Alih-alih dependensi (atau dengan "-D, --dependencies" tambahan untuk mereka) menggambar a
grafik termasuk hubungan. Ini hanya akan dicatat sejauh diperlukan
untuk dianalisis. Untuk mendapatkan gambaran penuh, Anda memerlukan bangunan penuh yang segar.
-l nama file
--log=nama file
--file-log=nama file
The nama file adalah tempat makepp menulis lognya. Ini mungkin juga sebuah direktori, di mana a
file bernama .makepp/log or mencatat akan dicari. Untuk membaca dari stdin, Anda harus memberi -
sebagai nama file. Ketika opsi ini tidak diberikan, defaultnya adalah direktori saat ini.
Opsi ini dapat diberikan beberapa kali, misalnya untuk menggabungkan semua log dari
"--tradisional-rekursif-membuat". Tetapi dependensi yang Anda sembunyikan dari makepp melalui
paradigma rekursi jahat tentu saja tidak dapat muncul di sini.
-M modul[=arg,...]
--modul=modul[=arg,...]
Muat modul dan impor fungsi apa pun yang diekspornya.
-m kode perl
--gabung=kode perl
Melakukan kode perl untuk setiap target dan dependensinya. Lihat penggabungan untuk detail tentang
pilihan ini.
-o nama file
--keluaran=nama file
Tulis output ke file ini.
-p
--polos
Jangan gunakan atribut seperti warna atau garis putus-putus. Ini sangat berguna untuk
keluaran "-t, --text" yang rapi. Dalam format itu tepi dua arah akan hilang
kecuali jika Anda menggabungkan ini dengan "-s, --separate-directions".
-r kode perl
--ganti nama=kode perl
Melakukan kode perl untuk setiap target dan dependensinya. Lihat penggantian nama untuk detailnya
tentang opsi ini.
-s
--arah-terpisah
Gambarlah dua panah terpisah, alih-alih masing-masing panah berujung ganda, untuk membuatnya lebih mudah
iklan.
-t
--teks
Hasilkan yang dapat dibaca manusia . Txt file, alih-alih uDraw(Graph) default .udg file.
-u
--ke atas
--ke atas
Opsi ini hanya bermakna jika Anda memberikan satu atau lebih pola. Itu hanya akan
pilih target yang bergantung pada dan/atau menyertakan file yang cocok.
-V
--Versi: kapan
Cetak nomor versi.
MENULIS ULANG
Teknik-teknik dalam bab ini biasanya penting untuk mendapatkan grafik berukuran cukup. Sebagai
mereka diformulasikan sebagai kode Perl, mengetahui bahasanya sangat membantu. Tapi kamu harus bisa
untuk mencapai cukup banyak dengan contoh di sini atau di galeri
<http://makepp.sourceforge.net/gallery/>.
Mengganti nama
Ini adalah penulisan ulang nama pertama yang terjadi, jika opsi "-r, --rename" diberikan. Untuk
setiap nama yang ditemui, perlcode dipanggil. Itu mendapat nama file di $_, dan itu dapat memodifikasi
dia. Ini sering diperlukan, karena makepp mencatat nama file yang sepenuhnya memenuhi syarat, sehingga satu node dapat
dengan mudah menjadi setengah layar lebar.
Untuk satu hal, Anda dapat menulis ulang nama menjadi "undef" atau string kosong. Ini akan menghilangkan
simpul dari grafik. Perhatikan bahwa menghilangkan simpul pada tahap pertama ini akan merusak
rantai ketergantungan jika simpul ini berada di tengah.
Anda juga dapat menulis ulang berbagai nama ke string yang sama, memaksa semuanya menjadi sama
node, yang mengakumulasi dependensi dan dependen gabungan.
Di sisi lain Anda bisa mengganti nama menjadi (biasanya) nama yang lebih pendek, untuk mengurangi
lebar node, yang bisa sangat lebar dengan nama file absolut. Ada beberapa
fungsi yang telah ditentukan dalam paket "Mpp::Rewrite", di mana kode Anda juga berjalan, Anda dapat menggunakan
untuk ini. Ini mengembalikan true jika mereka melakukan sesuatu sehingga Anda dapat menggabungkannya seperti pada:
--rename='cwd( 1 ) || &rumah || &usr'
&cwd
cwd jumlah
cwd jumlah, nama[, pemisah]
Menghapus direktori kerja saat ini dari awal jalur. Dengan nomor, juga
menggantikan direktori induk yang naik level dengan jumlah yang tepat ../
direktori, jika berlaku. Dalam hal ini Anda dapat memberikan alternatif nama, seperti
menumpuk ':' bukannya '..' dan tambahan alternatif alat pemisah seperti '' sebagai gantinya
dari '/'. Dalam kasus pertama Anda mungkin mendapatkan :/:/a/b, di detik bahkan lebih pendek ::a/b
alih-alih ../../a/b. Melewati nomor berguna jika Anda menarik barang dari
pohon tetangga. Atau Anda memiliki src direktori, di mana sebagian besar tindakan berada, jadi Anda
panggil makeppgraph di sana, tetapi ingin melihat hubungannya dengan direktori Anda yang lain juga.
Jika Anda tidak memberikan opsi "--rename", &cwd adalah defaultnya. Jika Anda tidak ingin mengganti nama,
Anda dapat memberikan beberapa kode perl seperti "--rename=1" yang tidak melakukan apa-apa.
&dir
Yang ini adalah pengurang kompleksitas grafik yang hebat. Ini mengurangi setiap file menjadi
direktori. Itu sama dengan pertanyaan: "File dari direktori mana yang bergantung pada file
dari direktori lain mana?" Perhatikan bahwa sementara grafik ketergantungan selalu asiklik
(kalau tidak, makepp tidak tahu harus mulai dari mana membangun), itu tidak benar untuk pengurangan ini
melihat. Misalnya jika dir1/a tergantung pada dir2/b dan dir2/a on dir1/b yang akan ditampilkan sebagai
saling ketergantungan antara kamu1 dan kamu2. Karena graf siklik tidak memiliki awal yang jelas
titik, tata letaknya mungkin aneh.
Berbeda dengan fungsi lain di bagian ini, ini tidak eksklusif dengan yang lain. Jadi
Anda mungkin tidak ingin menggabungkannya secara logis:
--rename='&dir; &cwd || &rumah'
&rumah
Mengganti direktori home Anda dengan ~/.
&makepp
Mengganti direktori instalasi makepp dengan |m|.
&suf
sufi jumlah
Yang ini juga merupakan pengurang kompleksitas grafik yang hebat. Ini mengurangi setiap file yang memiliki
akhiran untuk tanda bintang dan akhiran itu. Jadi Anda dapat melihat jenis file mana yang bergantung
di mana jenis lainnya. Dengan argumen 0 ia meninggalkan karakter pertama dari
direktori, asalkan itu adalah salah satu dari "/", "~" atau "|" (seperti yang dimasukkan oleh &home atau &usr jika Anda
disebut yang pertama). Dengan argumen positif, ia meninggalkan banyak level direktori
pada awalnya. Dengan argumen negatif, itu menghapus banyak level direktori di
tamat. Sehingga untuk /a/b/c/d/e/xy Anda mendapatkan:
&suf *.y
suf 0 /*.y
suf 1 /a/*.y
suf 2 /a/b/*.y
suf -1 /a/b/c/d/*.y
suf -2 /a/b/c/*.y
Untuk seorang kerabat a/b/c/d/e/xy Anda mendapatkan:
&suf *.y
suf 0 *.y
suf 1 a/*.y
suf -1 a/b/c/d/*.y
&usr
Bawah /, /usr, /utuan/lokal, /utuan/X11, /utuan/X11R6, /utuan/X11R7 or /opt, untuk salah satu dari
direktori bin, etc, include, lib or sAkan saya lakukan, inisial dari kata-kata tersebut adalah
digabungkan di antara batang.
Misalnya /utuan/llokal/bdi/foobar menjadi |ulb|foobar or /utuan/isertakan/net/if.h menjadi
|ui|net/jika.h. Perhatikan bahwa `l' adalah singkatan dari `local' ketika berada di antara dua huruf dan untuk `lib'
sebagai surat terakhir.
Penggabungan
Ini adalah penulisan ulang nama kedua yang terjadi, jika opsi "-m, --merge" diberikan. Ini
API masih dalam pengembangan! Saat ini target dilewatkan dalam $_ dan ketergantungan
sebagai argumen. Jika perlcode mengembalikan nilai, nilai itu menggantikan target dan
ketergantungan, menggabungkan mereka menjadi satu node. Beberapa fungsi yang telah ditentukan sebelumnya dapat membantu Anda:
c2o Untuk sumber C/C++ apa pun dan hasilnya .o file, gabungkan mereka menjadi satu node, dengan menambahkan ke
jalur sumber akhiran ">o" like beberapa/di mana/foo.cc>o, bahkan jika .o file ada di
direktori lain.
exe Untuk apa saja .o file dan hasil yang dapat dieksekusi dari nama dasar notdir yang sama tanpa a
akhiran atau dengan exe, gabungkan mereka menjadi satu simpul, dengan menambahkan tanda bintang ke .o file.
Ini tidak akan bekerja sama dengan c2o.
x2 Untuk setiap pasangan file dengan nama yang sama, biasanya header atau pustaka diterbitkan ke a
direktori pusat, gabungkan mereka menjadi satu simpul, dengan menambahkan *2 ke ketergantungan.
LINGKUNGAN
Makeppgraph melihat variabel lingkungan berikut:
$MAKEPPGRAFFLAGS
Bendera apa pun dalam variabel lingkungan ini ditafsirkan sebagai opsi baris perintah sebelumnya
setiap opsi eksplisit. Kutipan ditafsirkan seperti di makefiles.
Gunakan mppg online menggunakan layanan onworks.net