diff options
| author | Shulhan <m.shulhan@gmail.com> | 2021-05-13 05:43:45 +0700 |
|---|---|---|
| committer | Shulhan <m.shulhan@gmail.com> | 2021-05-13 05:43:45 +0700 |
| commit | 1627936c637c80120cf921632f8134081e45cd78 (patch) | |
| tree | d85b4bed2e1aaccc20f9ebdfbd4f21b68d7a461a | |
| parent | 2bfd68f3cf730595f0cdd18ca446ad2ed40dc25b (diff) | |
| download | golang-id-web-1627936c637c80120cf921632f8134081e45cd78.tar.xz | |
_content: terjemahkan dokumentasi perintah "cmd/{cover,fix,gofmt,vet}"
* /cmd/cover: Cover adalah sebuah program untuk menganalisis hasil
liputan _profile_ yang dibangkitkan oleh
'go test -coverprofile=cover.out'.
* /cmd/fix: Program `fix` membaca sumber kode Go dan mencari penggunaan
fitur-fitur lama dari bahasa dan pustaka dan menggantinya dengan yang
baru.
* /cmd/gofmt: Program `fmt` memformat sumber berkas Go.
* /cmd/godoc: Program `godoc` mengekstrak dan membangkitkan dokumentasi
dari paket-paket Go.
* /cmd/vet: Program `vet` memeriksa kode sumber dan melaporkan konstruksi
yang mencurigakan, seperti pemanggilan `Printf` dengan argumen yang
tidak sesuai dengan formatnya.
| -rw-r--r-- | _content/cmd/cover/index.adoc | 25 | ||||
| -rw-r--r-- | _content/cmd/fix/index.adoc | 37 | ||||
| -rw-r--r-- | _content/cmd/gofmt/index.adoc | 157 | ||||
| -rw-r--r-- | _content/cmd/vet/index.adoc | 83 | ||||
| -rw-r--r-- | _content/doc/cmd/index.adoc | 26 |
5 files changed, 322 insertions, 6 deletions
diff --git a/_content/cmd/cover/index.adoc b/_content/cmd/cover/index.adoc new file mode 100644 index 0000000..9904817 --- /dev/null +++ b/_content/cmd/cover/index.adoc @@ -0,0 +1,25 @@ += Perintah cover + +Cover adalah sebuah program untuk menganalisis hasil liputan _profile_ yang +dibangkitkan oleh 'go test -coverprofile=cover.out'. + +Cover juga digunakan oleh 'go test -cover' untuk menulis ulang sumber kode +dengan menambahkan anotasi untuk melacak bagian dari fungsi yang dieksekusi. +Program ini beroperasi pada sumber berkas Go satu per satu, memproses +informasi dasar setiap blok perintah dengan mempelajari sumber kode-nya. +Oleh karena itu, program cover lebih portabel daripada perkakas _coverage_ +yang menulis-ulang _binary_, namun memiliki fungsi yang lebih sedikit. +Contohnya, ia tidak menyelidiki ekspresi di dalam `&&` dan `||`, dan sedikit +kebingungan bila sebuah perintah memiliki banyak fungsi. + +Saat memproses _coverage_ dari sebuah paket yang menggunakan cgo, perkakas +cover harus diaplikasikan ke hasil dari pra-pemrosesan dari cgo, bukan +input-nya, secara program cover menghapus komentar-komentar yang penting untuk +cgo. + +Untuk informasi penggunaan, silakan lihat: + +---- +go help testflag +go tool cover -help +---- diff --git a/_content/cmd/fix/index.adoc b/_content/cmd/fix/index.adoc new file mode 100644 index 0000000..8b342f7 --- /dev/null +++ b/_content/cmd/fix/index.adoc @@ -0,0 +1,37 @@ += Program fix + +Program `fix` membaca sumber kode Go dan mencari penggunaan fitur-fitur +lama dari bahasa dan pustaka dan menggantinya dengan yang baru. +Setelah Anda memasang rilis Go terbaru, `fix` membantu Anda membuat perubahan +yang diperlukan terhadap sumber kode Go Anda. + +Penggunaan: + +---- +go tool fix [-r name,...] [path ...] +---- + +Bila parameter "path" tidak diberikan, `fix` akan membaca standar input dan +menulis hasilnya ke standar keluaran. + +Jika "path" adalah sebuah berkas, `fix` menulis ulang berkas tersebut. +Jika "path" adalah sebuah direktori, `fix` menulis ulang semua berkas .go di +dalam direktori tersebut. +Saat `fix` menulis ulang sebuah berkas, ia akan menulis sebuah baris ke +_standard error_ yang menjelaskan nama berkas dan perbaikan yang diterapkan. + +Jika opsi `-diff` di-set, tidak ada berkas yang ditulis ulang. +Melainkan, `fix` mencetak perbedaan dari perbaikan yang akan diterapkan. + +Opsi `-r` membatasi kumpulan perbaikan yang akan diterapkan berdasarkan nilai +yang diberikan. +Secara bawaan, `fix` menerapkan semua perbaikan yang diketahui. +Perbaikan yang dilakukan oleh `fix` adalah _idempotent_, sehingga aman untuk +menjalankan `fix` ke sebagian kode bahkan tanpa menggunakan opsi `-r`. + +Untuk melihat daftar perbaikan yang dapat diterapkan, jalankan 'go tool fix +-help'. + +Program `fix` tidak membuat salinan dari berkas yang ia tulis ulang. +Gunakan fungsionalitas sistem _version control_ "diff" untuk memeriksa +perubahan yang dibuat oleh `fix` sebelum menyimpannya. diff --git a/_content/cmd/gofmt/index.adoc b/_content/cmd/gofmt/index.adoc new file mode 100644 index 0000000..fabdc9a --- /dev/null +++ b/_content/cmd/gofmt/index.adoc @@ -0,0 +1,157 @@ += Perintah gofmt + +Perintah `gofmt` memformat program Go. +Ia menggunakan tab untuk indentasi dan spasi untuk penjajaran. +Penjajaran mengasumsikan bahwa _editor_ menggunakan font dengan lebar-tetap. + +Penggunaan: + +---- +gofmt [flags] [path ...] +---- + +Tanpa argumen "path", ia akan memroses standar input. +Jika "path" adalah sebuah berkas, ia akan memroses berkas tersebut; +bila diberikan sebuah direktori, ia akan memroses semua berkas .go dalam +direktori tersebut, secara rekursif. +(Berkas yang diawali dengan titik akan diindahkan.) +Secara bawaan, `gofmt` mencetak sumber kode yang diformat ke standar keluaran. + +Opsi "flags" berupa: + +`-d`:: + Jangan cetak sumber kode yang telah diformat ke standar keluaran. + Jika format sebuah berkas berbeda dengan hasil `gofmt`, cetak perbedaannya + ke standar keluaran. +`-e`:: + Cetak semua eror. +`-l`:: + Jangan cetak sumber kode yang telah diformat ke standar output. + Jika format sebuah berkas berbeda dengan hasil `gofmt`, cetak nama berkas + tersebut ke standar keluaran. +`-G`:: + Aktifkan kode generik, menggunakan parameter tipe. + Lihat golang.org/issues/43651 untuk informasi lebih lanjut. +`-r rule`:: + Terapkan aturan penulisan ulang terhadap sumber berkas sebelum melakukan + pemformatan. +`-s`:: + Coba sederhanakan kode (setelah menerapkan aturan tulis-ulang, jika ada). +`-w`:: + Jangan cetak sumber kode yang telah diformat ke standar keluaran. + Jika format sebuah berkas berbeda dengan hasil `gofmt`, timpa dengan hasil + `gofmt`. + Jika eror terjadi saat penimpaan, berkas yang asli dikembalikan dari + cadangan. + +Dukungan pelacakan: + +`-cpuprofile filename`:: + Tulis _profile_ CPU ke berkas yang ditentukan. + +Aturan penulisan-ulang yang ditentukan lewat opsi `-r` haruslah berupa sebuah +string dengan format berikut: + +---- +pola -> pengganti +---- + +Parameter "pola" dan "pengganti" haruslah berupa ekspresi Go yang valid. +Pada parameter "pola", identifikasi karakter-tunggal huruf kecil berlaku +sebagai pencocokan _wildcard_ terhadap sub-ekspresi apa pun; +ekspresi-ekspresi tersebut akan diganti dengan identifikasi yang sama dengan +parameter "pengganti". + +Saat `gofmt` membaca dari standar input, ia dapat menerima seluruh atau +potongan dari program Go. +Bila potongan dari program Go diberikan, ia haruslah secara sintaksis berupa +deklarasi, perintah, atau ekspresi yang valid. +Saat memformat potongan kode tersebut, `gofmt` menjaga indentasi berikut +dengan spasi pada awal dan akhir setiap baris, supaya bagian-bagian individu +dari program Go tersebut dapat diformat dengan mengirimnya ke `gofmt`. + + +=== Examples + +Untuk memeriksa berkas-berkas yang memiliki kurung yang berlebihan: + +---- +gofmt -r '(a) -> a' -l *.go +---- + +Untuk menghapus tanda kurung yang berlebihan: + +---- +gofmt -r '(a) -> a' -w *.go +---- + +Untuk mengonversi isi paket dari menggunakan batas atas slice yang eksplisit +menjadi implisit: + +---- +gofmt -r 'α[β:len(α)] -> α[β:]' -w $GOROOT/src +---- + + +=== Perintah penyederhanaan + +Saat dipanggil dengan argumen `-s`, perintah `gofmt` akan membuat transformasi +kode berikut bila memungkinkan. + +* Array, slice atau map dalam bentuk: ++ +---- +[]T{T{}, T{}} +---- ++ +akan disederhanakan menjadi: ++ +---- +[]T{{}, {}} +---- + +* Ekspresi slice dalam bentuk: ++ +---- +s[a:len(s)] +---- ++ +akan disederhanakan menjadi: ++ +---- +s[a:] +---- + +* Perintah `range` dalam bentuk: ++ +---- +for x, _ = range v {...} +---- ++ +akan disederhanakan menjadi: ++ +---- +for x = range v {...} +---- + +* Perintah `range` dalam bentuk: ++ +---- +for _ = range v {...} +---- ++ +akan disederhanakan menjadi: ++ +---- +for range v {...} +---- + +Hasilnya bisa jadi perubahan yang tidak kompatibel dengan versi Go sebelumnya. + + +== Bug + +☞ Implementasi dari `-r` sedikit lambat. + +☞ Jika `-w` gagal, berkas asli yang dikembalikan bisa jadi tidak memiliki +atribut berkas yang sama dengan yang asli. diff --git a/_content/cmd/vet/index.adoc b/_content/cmd/vet/index.adoc new file mode 100644 index 0000000..ceca586 --- /dev/null +++ b/_content/cmd/vet/index.adoc @@ -0,0 +1,83 @@ += Program vet + +Program `vet` memeriksa kode sumber dan melaporkan konstruksi yang +mencurigakan, seperti pemanggilan `Printf` dengan argumen yang tidak sesuai +dengan formatnya. +Vet menggunakan heuristik yang tidak menjamin semua laporan adalah masalah +yang benar, namun ia bisa menemukan eror yang tidak bisa ditangkap oleh +_compiler_. + +Program `vet` biasanya dipanggil lewat perintah `go`. +Perintah berikut memeriksa paket dalam direktori yang sekarang: + +---- +go vet +---- + +perintah berikut ini memeriksa paket-paket berdasarkan path yang diberikan: + +---- +go vet my/project/... +---- + +Gunakan "go help packages" untuk melihat cara lain untuk menentukan +paket-paket yang akan di-vet. + +Kode keluaran dari `vet` adalah selain-nol untuk cara pemanggilan perkakas +yang salah atau bila ada masalah yang dilaporkan, dan 0 bila sukses. +Ingatlah bahwa `vet` tidak memeriksa setiap kemungkinan masalah dan bergantung +pada heuristik yang tidak terjamin, jadi sebaiknya hanya digunakan sebagai +panduan saja, bukan sebagai indikator dari kebenaran. + +Untuk melihat daftar pemeriksaan, jalankan "go tool vet help": + +`asmdecl`:: laporkan ketidak-sesuaian antara berkas _assembly_ dan deklarasi + Go. +`assign`:: periksa penempatan yang tidak berguna. +`atomic`:: periksa kesalahan umum dari penggunakan paket `sync/atomic`. +`bools`:: periksa kesalahan umum dari operator boolean. +`buildtag`:: periksa bahwa tag `+build` ditulis dan berada pada lokasi + yang benar. +`cgocall`:: deteksi pelanggaran dari aturan pengiriman pointer dari cgo. +`composites`:: periksa penulisan komposit tanpa _key_. +`copylocks`:: periksa penguncian (mutex) yang dikirim dengan nilai. +`httpresponse`:: periksa kesalahan menggunakan HTTP respons. +`loopclosure`:: periksa referensi ke variabel dalam loop dari dalam fungsi + yang bersarang. +`lostcancel`:: periksa fungsi pembatalan yang dikembalikan oleh +`context.WithCancel`. +`nilfunc`:: periksa pembandingan antara fungsi dan nil yang tidak berguna. +`printf`:: periksa konsistensi dari format Printf dan argumennya. +`shift`:: periksa operasi `shift` yang sama atau melebihi ukuran dari integer. +`stdmethods`:: periksa penanda method dari interface yang dikenal. +`structtag`:: periksa tag pada field pada struct apakah sesuai dengan + `reflect.StructTag.Get`. +`tests`:: periksa kesalahan umum penggunaan dari deklarasi fungsi `TestXxx` + dan `ExampleXxx`. +`unmarshal`:: laporkan pengiriman nilai-nilai selain pointer atau selain + interface pada saat melakukan unmarshal. +`unreachable`:: periksa kode yang tidak terpakai. +`unsafeptr`:: periksa konversi yang tidak valid dari `uintptr` ke + `unsafe.Pointer`. +`unusedresult`:: periksa nilai kembalian dari pemanggilan fungsi yang tidak + digunakan. + +Untuk detail dan opsi dari setiap pemeriksaan, seperti `printf`, jalankan +"go tool vet help printf". + +Secara bawaan, semua pemeriksaan dilakukan. +Jika ada opsi yang secara eksplisit di-set ke "true", maka hanya opsi tersebut +yang dijalankan. +Sebaliknya, bila ada opsi yang di-set ke "false", hanya opsi tersebut yang +tidak dijalankan. +Maka `-printf=true` menjalankan pemeriksaan `printf`, dan `-printf=false` +menjalankan semua pemeriksaan kecuali yang `printf`. + +Untuk informasi mengenai pembuatan pemeriksaan yang baru, lihat +https://golang.org/x/tools/go/analysis[x/tools: go analysis^]. + +Opsi-opsi inti: + +`-c=N`:: tampilkan baris yang menimbulkan masalah ditambah N baris yang + melingkupi konteks kesalahan tersebut. +`-json`:: tampilkan diagnosis analisis (dan eror) dalam format JSON. diff --git a/_content/doc/cmd/index.adoc b/_content/doc/cmd/index.adoc index f4e0e3b..b985414 100644 --- a/_content/doc/cmd/index.adoc +++ b/_content/doc/cmd/index.adoc @@ -22,9 +22,23 @@ bernama `gofmt` dan `godoc` karena sering kali digunakan. Klik pada tautan berikut untuk membaca dokumentasi lebih lanjut, metode pemanggilan, dan detail penggunaan. -link:/cmd/go/[go]:: Program `go` mengatur sumber kode Go and menjalankan -perintah lainnya. -Lihat dokumentasi perintah untuk penggunaan lebih detail. - -link:/cmd/cgo/[cgo]:: Program cgo membolehkan pembuatan paket Go yang -memanggil kode C. +link:/cmd/go/[go]:: + Program `go` mengatur sumber kode Go and menjalankan perintah lainnya. + Lihat dokumentasi perintah untuk penggunaan lebih detail. +link:/cmd/cgo/[cgo]:: + Program cgo membolehkan pembuatan paket Go yang memanggil kode C. +link:/cmd/cover/[cover]:: + Cover adalah sebuah program untuk membuat dan menganalisis hasil liputan + _profile_ yang dibangkitkan lewat "go test -coverprofile". +link:/cmd/fix/[fix]:: + Program `fix` membaca sumber kode Go dan mencari penggunaan fitur-fitur + lama dari bahasa dan pustaka dan menggantinya dengan yang baru. +link:/cmd/gofmt/[fmt]:: + Program `fmt` memformat sumber berkas Go. +https://pkg.go.dev/golang.org/x/tools/cmd/godoc[godoc^]:: + Program `godoc` mengekstrak dan membangkitkan dokumentasi dari paket-paket + Go. +link:/cmd/vet/[vet]:: + Program `vet` memeriksa kode sumber dan melaporkan konstruksi yang + mencurigakan, seperti pemanggilan `Printf` dengan argumen yang tidak + sesuai dengan formatnya. |
