Rumah >pembangunan bahagian belakang >Golang >Penyelesaian untuk menggunakan golangci-lint secara tempatan
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. Dalam proses pembangunan harian kami, tingkah laku biasa kami ialah: kod -> git commit -> golangci-lint
作为 golang 支持最好的代码检查工具,而且在golang开源库中,有着大量的使用,由此可以说明为了项目更好的进行开发,和后期更好的维护,我们也可以尝试着引入它。
我们再日常的开发过程中,习惯的行为是:code -> git add -> git commit -> git push 一条龙服务。
那么这个时候需要在 git commit
之前检查我们的代码是否已经符合一定的规则,就需要手动执行 golangci-lint run ./...
,或者在 git push
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. 🎜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.
fmt 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. Jalankan sekali untuk setiap failgolangci-lint run xxx.go
golangci-lint run xxx.go
这就尴尬了;后面本来想通过脚本来过滤出所有文件所在的文件夹,只针对文件夹来跑,由于写这个脚本对于我来说有点复杂(不会这个难的)了。当然还有一个问题是 golangci-lint
的执行过程需要很长的时间,不能说每次commit都等个1分钟,这不就变相增加摸鱼时间了[/doge] 。
经过多番折腾,终于诞生了一个相对前面方案,非常适合我们的一种方式。
通过 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].
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!