Haruskah pengkodean standar / gaya ditegakkan oleh server integrasi berkelanjutan menjalankan alat analisis statis (mis. PMD, StyleCop / FxCop) dan gagal membangun jika standar tidak diikuti? Apa jenis aturan yang tidak boleh digunakan untuk gagal membangun?
coding-style
coding-standards
continuous-integration
Leif Carlsen
sumber
sumber
Ini tidak sepenuhnya tidak pernah terdengar dan Anda akan tahu apakah itu akan bekerja untuk Anda hanya dengan mencobanya. Ada beberapa langkah yang bisa diambil sebelum itu.
Pertama, tim harus memutuskan standar bersama. Maka alat seperti ReSharper harus digunakan untuk memberi tahu pengembang jika mereka tidak mematuhi standar. Melakukan tinjauan sejawat pada setiap tugas dapat membantu lebih jauh.
Setelah langkah-langkah tersebut diambil, dapat dianggap menempatkan pemeriksaan standar pengkodean ke CI-server. Namun harus tetap dipertimbangkan jika bijaksana untuk membangun break karena tidak mematuhi standar pengkodean. Risikonya adalah Anda akan memiliki banyak bangunan rusak yang mungkin merusak arti bangunan rusak.
Alih-alih membuat build build, Anda bisa menjalankan alat dan meminta mereka membuat laporan. Jika mengkode pelanggaran standar tampaknya meningkat, Anda dapat mengumpulkan tim dan mencari tahu mengapa itu terjadi.
sumber
Pemeriksaan integrasi berkesinambungan harus sangat, sangat cepat. Setiap penundaan yang berarti akan membuat programmer Anda akan berkomitmen dan kehilangan jejak proses pemikiran mereka sambil menunggu hasil. Buat lebih lama dan mereka akan berkomitmen dan mendapatkan secangkir kopi atau mengobrol dengan teman kantor mereka tentang kinerja ceroboh terbaru dari beberapa tim olahraga. Penundaan itu sangat kontraproduktif. Beberapa hal sebaiknya diserahkan kepada build malam atau review kode.
Yang subyektif, untuk memulai. Bagaimana Anda menegakkan aturan "Kode akan mendokumentasikan diri sendiri atau berkomentar dengan baik"? Aturan "no magic number"? Itulah hal-hal yang sebaiknya diserahkan kepada tinjauan kode.
Kategori lainnya adalah pelanggaran terhadap aturan yang telah diberikan pengabaian. Mengingat basis kode yang cukup besar, pasti akan ada beberapa kode di mana melanggar standar adalah hal yang tepat untuk dilakukan.
sumber
Sebagai bagian dari Rencana Peningkatan Kualitas Perangkat Lunak, kami baru-baru ini memberi kode serangkaian sniff kode untuk diintegrasikan ke dalam proses pembuatan kami.
Kami membangun banyak, menjadi aplikasi PHP tidak ada kompilasi nyata sehingga build benar-benar merupakan unit test / analisis statis / pelari, dan kami mampu menghabiskan beberapa siklus untuk ini.
Kami memiliki beberapa masalah kualitas kode, dan beberapa kode lama dengan banyak masalah.
Mulai dengan dasar bahwa jika tidak gagal, komit akan diabaikan kami mulai mengkonfirmasikan komitmen terhadap standar pengkodean 'yang diinginkan' kami, dan gagal komit dengan kesalahan yang tidak memenuhi standar.
Pemeliharaan lahan terhenti, bahkan perbaikan paling sederhana untuk komponen lawas mengharuskan pengembang untuk memformat ulang sumber dalam jumlah besar, dan bangunan itu rusak lebih sering daripada tidak. Tak perlu dikatakan, kami mengubah kesalahan menjadi peringatan, dan sekarang mereka, diabaikan dan 'sebagian besar' sia-sia.
Jadi saya akan mengatakan ini (belajar dari pengalaman sulit).
Pastikan standar basis kode Anda cukup dekat dengan standar yang Anda tegaskan bahwa Anda tidak memerlukan dev untuk memformat ulang volume kode, secara instan. Atau .. Anda siap dan mengharapkan peningkatan upaya.
Menjadi tim kecil dengan persyaratan pengiriman yang sangat besar, kami tidak mampu mengubah tim menjadi operasi faktor-besar. Standar pengkodean kami sekarang sebagian besar ditangani oleh tinjauan manual, dan warisan sedang ditulis ulang sebagai bagian dari rencana perbaikan berkelanjutan.
Ketika saya mengatakan bahwa peringatan itu 'sebagian besar' tidak ada gunanya, nah kita sekarang menggunakannya untuk merekam statistik yang memungkinkan kita untuk mengukur kpi yang harus terus menunjukkan peningkatan.
Ketika kita menegakkan kembali sniff kode, kita akan mulai menyalakan, dan memperkenalkan beberapa sniff sekaligus sampai kita memiliki standar yang ditegakkan.
sumber
Itu akan tergantung pada tujuan dan strategi utama Anda .
Memaksa semua standar yang disebutkan dalam server CI mungkin tampak sangat menguntungkan. Namun, itu mungkin tidak praktis untuk tim pengembangan besar (lebih dari 6 pengembang), jika dilakukan pada setiap komit ke server. Menunggu server Anda merespons setelah melakukan, jangan sampai lama. Mungkin berpotensi menyebabkan waktu henti.
Namun, itu benar-benar sah untuk memblokir komit jika kode (yang sebenarnya berubah-set) memiliki masalah ketergantungan atau tidak dikompilasi. Namun, gagal kode karena tata letak kode dan beberapa konvensi penamaan mungkin terlalu parah dan tidak vital pembatasan untuk aturan komit server CI.
Tetapi sangat mungkin aturan yang membantu jika diterapkan pada malam hari.
Selain itu, alat re-factoring dapat membantu dalam menerapkan dan mempelajari standar - seperti penggunaan kembali atau JustCode oleh pengembang.
sumber