


Penyelesaian untuk menggunakan golangci-lint secara tempatan
Mengapa kita memerlukan pemeriksaan kod?
Secara amnya, pemeriksaan kod adalah penting atas tiga sebab:
Elakkan pepijat tahap rendah: beberapa masalah kod biasa, jika tidak ditemui dalam masa sebelum penyusunan atau berjalan, masalah tatabahasa dalam kod akan secara langsung membawa kepada kompilasi atau masa jalan ralat, Mempengaruhi kecekapan pembangunan dan kualiti kod; spesifikasi format tertentu;
Pastikan kualiti kod dalam talian: Dalam pengurusan versi, kami perlu melakukan beberapa kerja semakan kod secara automatik sebelum penyerahan atau pelepasan untuk memastikan kod kami memenuhi keperluan versi akhir.
golangci-lint
ialah alat semakan kod terbaik yang disokong oleh golang, dan ia digunakan secara meluas dalam perpustakaan sumber terbuka golang Ini menunjukkan bahawa untuk pembangunan projek yang lebih baik dan penyelenggaraan yang lebih baik dalam tempoh kemudian, anda juga boleh mencuba untuk memperkenalkannya. Soalan tentang cuba menggunakan goalngci-lint
Dalam proses pembangunan harian kami, tingkah laku biasa kami ialah: kod -> git commit -> golangci-lint
作为 golang 支持最好的代码检查工具,而且在golang开源库中,有着大量的使用,由此可以说明为了项目更好的进行开发,和后期更好的维护,我们也可以尝试着引入它。
尝试使用 goalngci-lint 的问题
我们再日常的开发过程中,习惯的行为是:code -> git add -> git commit -> git push 一条龙服务。
1. 手动执行模式:
那么这个时候需要在 git commit
之前检查我们的代码是否已经符合一定的规则,就需要手动执行 golangci-lint run ./...
,或者在 git push
🎜1 Mod pelaksanaan manual: 🎜 🎜
🎜 Kemudian pada masa ini anda perlu menambahgit commit
Sebelum menyemak sama ada kod kami memenuhi peraturan tertentu, kami perlu melaksanakannya secara manualgolangci-lint run ./...
, atau dalam git push
untuk semakan kod sebelum ini. Memandangkan komitmen dan dorongan kami adalah operasi harian, ia mungkin kerap berlaku, dan kaedah manual ini agak menyusahkan. Dalam proses menggunakannya, disebabkan beberapa perkara, anda mungkin melupakannya, atau anda mungkin tidak melaksanakannya secara langsung, berasa menyusahkan dan mempunyai keyakinan penuh terhadap kod anda sendiri. Jadi selepas menggunakannya secara keseluruhan, ia masih sangat emm Anda harus tahu bahawa ia tidak lancar. 🎜2. Mod pelari gitlab:
Sebab mengapa saya memikirkan penyelesaian ini mungkin kerana saya melihat terlalu banyak perpustakaan sumber terbuka menggunakan pemeriksaan kod pelayan (walaupun ia hanya PR)
Membina makmal docker , dan mengkonfigurasi pelari melalui tutorial, yang mengambil masa selama 2 hari, saya perlu mempelajari konfigurasi ci gitlab, konfigurasi kerja pelari, dan pemasangan beberapa alatan, tetapi hasilnya mungkin tidak memuaskan.
Memikirkan bahawa hasil semakan pelayan berada di gitlab, pembangunan kami pada asasnya (kali pertama kami menarik kod) tidak akan pergi ke gitlab, jadi bagaimanakah mesej ralat ini boleh dihantar kepada orang yang sepadan? Atau jika berbilang orang menulis fungsi, bagaimana untuk memperuntukkan ralat? Penyelesaian menggunakan semakan pelayan ini mengambil masa 2 hari untuk berlalu.
3. untuk menangani kesilapan anda. Hahaha (mekanisme) tidak akan memberitahu anda bahawa anda boleh memaksa penyerahan (gunakannya dengan berhati-hati). Ini memulakan penulisan skrip pra-komit tempatan. Saya mencari maklumat di Internet dan menulis skrip pra-komit berdasarkan keperluan saya sendiri. Terutamanya kodfmt dan kod<code style="font-size: 14px;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;color: rgb (30, 107, 184);warna latar: rgba(27, 31, 35, 0.05); keluarga fon: " operator mono consolas monaco menlo monospace break-all> golangci-lint
semak. Saya fikir saya pasti akan berjaya kali ini!
Pada masa ini, skrip ditulis, tetapi bagaimana untuk memuat naiknya ke pelayan Memandangkan folder .git tidak boleh dimuat naik ke pelayan secara lalai, satu-satunya cara ialah menulis skrip init.sh untuk memuat naiknya ke pelayan? pelayan. Semua pembangun perlu memuat naiknya ke pelayan untuk kali pertama Apabila mendapatkan projek, anda hanya perlu melaksanakannya dan mengkonfigurasinya secara tempatan, yang lebih mudah.
Cuba jalankan: fmt
和代码golangci-lint
检查。心想这次一定能成!
这时,脚本写好了,但是改怎么上传到服务器呢,由于.git 文件夹作为默认不可上传到服务器,只有写一个 init.sh 的脚本来上传服务器了,所有开发人员在第一次获取项目的时候只需要执行一下,本地的配置就好了,这就简单很多了。
试着跑了一下:

。。。结果不得行。此处文字已经不能表达我的心情了。
经过一系列的操作后,发现golangci-lint
golangci-lint
tidak menyokong penyemakan fail individu. - Prinsip penyemakan skrip saya adalah seperti berikut:
🎜🎜Tapis semua fail go yang diubah suai dalam komit semasa🎜 Jalankan sekali untuk setiap fail
golangci-lint run xxx.go
golangci-lint run xxx.go
这就尴尬了;后面本来想通过脚本来过滤出所有文件所在的文件夹,只针对文件夹来跑,由于写这个脚本对于我来说有点复杂(不会这个难的)了。当然还有一个问题是 golangci-lint
的执行过程需要很长的时间,不能说每次commit都等个1分钟,这不就变相增加摸鱼时间了[/doge] 。
4. 本地 pre-commit + pre-push
经过多番折腾,终于诞生了一个相对前面方案,非常适合我们的一种方式。
通过 init.sh
修改默认git hook
位置到 我们创建的 githooks
文件夹,具体的操作可以查看脚本内容,我觉得脚本写的还是挺明确的。
通过 pre-commit
提供 fmt 和 import 的检查和自动格式化再自动添加,避免一些忘记自己格式化的操作。
通过pre-push
Ini memalukan; kemudian saya pada asalnya ingin menggunakan skrip untuk menapis folder di mana semua fail berada, dan hanya menjalankannya pada folder, kerana menulis skrip ini agak rumit untuk saya (bukan yang sukar)). Sudah tentu terdapat masalah lain: golangci-lint
mengambil masa yang lama. Kami tidak boleh mengatakan bahawa kami perlu menunggu selama 1 minit untuk setiap komit. Ini akan meningkatkan masa memancing dalam penyamaran[/doge].
4. Pra-komit tempatan + pra-tekan
Selepas banyak melambung, akhirnya kami menghasilkan penyelesaian yang agak sesuai untuk kami. melaluiinit.sh
Ubah suai lalaigit hook
lokasi ke githooks
folder, khusus Anda boleh melihat kandungan skrip melalui operasi saya rasa skripnya agak jelas.
melaluipra-komit
Menyediakan pemeriksaan fmt dan import serta pemformatan automatik Ditambah untuk mengelakkan beberapa operasi di mana anda terlupa untuk memformat sendiri.
melaluipra-tolak
untuk menyemak sama ada projek itu ditolak ke keadaan di mana ia boleh digunakan bahagian pelayan. Memandangkan tolakan tidak begitu kerap, pemeriksaan keseluruhan projek diterima pakai pada masa ini.
Atas ialah kandungan terperinci Penyelesaian untuk menggunakan golangci-lint secara tempatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Dua cara untuk menentukan struktur dalam bahasa Go: perbezaan antara VAR dan jenis kata kunci. Apabila menentukan struktur, pergi bahasa sering melihat dua cara menulis yang berbeza: pertama ...

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apabila menggunakan Goland untuk Pembangunan Bahasa GO, banyak pemaju akan menghadapi tag struktur tersuai ...

GO Pointer Syntax dan menangani masalah dalam penggunaan perpustakaan Viper semasa pengaturcaraan dalam bahasa Go, adalah penting untuk memahami sintaks dan penggunaan petunjuk, terutama dalam ...
