Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penyelesaian untuk menggunakan golangci-lint secara tempatan

Penyelesaian untuk menggunakan golangci-lint secara tempatan

Golang菜鸟
Golang菜鸟ke hadapan
2023-08-04 17:02:291185semak imbas

Mengapa kita memerlukan pemeriksaan kod?

Secara amnya, pemeriksaan kod adalah penting atas tiga sebab:

  1. 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;

  2. 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.

  3. 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.

  4. 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 menambah git 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 的脚本来上传服务器了,所有开发人员在第一次获取项目的时候只需要执行一下,本地的配置就好了,这就简单很多了。

试着跑了一下:

Penyelesaian untuk menggunakan golangci-lint secara tempatan

。。。结果不得行。此处文字已经不能表达我的心情了。

经过一系列的操作后,发现golangci-lint

Penyelesaian untuk menggunakan golangci-lint secara tempatan

. . . Hasilnya tidak berkesan. Kata-kata di sini tidak dapat meluahkan perasaan saya.

Selepas beberapa siri operasi, saya mendapati bahawa golangci-lint tidak menyokong penyemakan fail individu.
  1. Prinsip penyemakan skrip saya adalah seperti berikut:

    🎜🎜Tapis semua fail go yang diubah suai dalam komit semasa🎜
  2. Jalankan sekali untuk setiap failgolangci-lint run xxx.gogolangci-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!

Kenyataan:
Artikel ini dikembalikan pada:Golang菜鸟. Jika ada pelanggaran, sila hubungi admin@php.cn Padam