Saya sedang berpikir untuk membuat pekerjaan cron yang memeriksa kode, menjalankan pemformat kode di atasnya, dan jika ada yang berubah, melakukan perubahan dan mendorong mereka kembali.
Sebagian besar proyek yang menggunakan autoformatters menempatkan mereka di hook git, tetapi melakukannya secara otomatis setiap beberapa jam akan menghilangkan beban bagi setiap pengembang untuk menginstal hook git.
Saya masih akan mendorong semua orang untuk menulis kode yang bersih dan diformat dengan baik, dan mungkin saya dapat memiliki sistem secara otomatis melakukan ping devs ketika kode yang mereka tulis diformat ulang, sehingga mereka tahu apa yang harus dilakukan di masa depan.
coding-style
automation
orang besar
sumber
sumber
Jawaban:
Kedengarannya bagus, tapi saya lebih suka orang yang bertanggung jawab melakukan perubahan kode, bukan bot.
Selain itu, Anda ingin memastikan bahwa perubahan itu tidak merusak apa pun. Misalnya, kami memiliki aturan yang memesan properti dan metode berdasarkan abjad. Ini dapat berdampak pada fungsionalitas , misalnya dengan urutan data dan metode dalam file WSDL kontrak WCF.
sumber
git blame
tidak hanya untuk menemukan kesalahan bug, tetapi juga untuk menemukan komit ketika sesuatu ditambahkan / dihapus, yang dapat berguna karena sejumlah alasan.Saya akan mencoba membuatnya sangat mudah bagi semua orang di tim untuk menerapkan pemformatan kode otomatis sesuai dengan standar tim Anda langsung di dalam editor atau IDE Anda , ke file kode sumber saat ini (atau bagian tertentu dari itu). Ini memberi anggota tim Anda lebih banyak kontrol tentang bagaimana dan kapan pemformatan dilakukan, biarkan mereka memeriksa kode sebelum dilakukan dalam bentuk final, dan mengujinya setelah pemformatan itu terjadi , bukan sebelumnya.
Jika semua atau sebagian besar anggota tim Anda menggunakan editor yang sama, ini seharusnya tidak terlalu sulit. Jika semua orang menggunakan yang berbeda, maka pendekatan Anda mungkin merupakan solusi terbaik kedua, selama tim mendukungnya. Namun, saya sarankan Anda memiliki langkah-langkah keamanan tambahan yang diinstal, seperti bangunan malam hari dan pengujian otomatis yang dijalankan setelah setiap modifikasi kode otomatis.
sumber
Ini adalah ide yang buruk, bukan hanya karena tidak mendorong orang untuk menulis kode yang layak, tetapi juga karena pemformatan ulang akan muncul sebagai perubahan kode dalam VCS Anda (Anda memang menggunakan yang saya harap), menutupi aliran historis pengembangan kode. Lebih buruk lagi, setiap tindakan pemformatan kode (memang setiap perubahan pada kode sama sekali) memiliki kemungkinan untuk memperkenalkan bug, apakah itu manual atau otomatis. Jadi pemformat Anda sekarang dapat memperkenalkan bug dalam kode Anda yang tidak akan melalui tinjauan kode, pengujian unit, pengujian integrasi, dll hingga beberapa bulan kemudian.
sumber
Saya akan cenderung percaya itu adalah ide yang baik (untuk secara otomatis menjalankan pemformat kode), tetapi itu hanya pendapat saya.
Saya tidak akan menjalankannya secara berkala, tetapi jika memungkinkan sebelum kontrol versi dilakukan.
Dengan git , melakukan hook pre-commit akan berguna. Dalam banyak proyek C atau C ++ yang dibangun dengan beberapa Makefile , saya menambahkan beberapa
indent
target (yang menjalankan formatters kode yang sesuai sepertiindent
atauastyle
) dan mengharapkan kontributor berjalanmake indent
secara teratur. BTW, Anda bahkan dapat menambahkan beberapamake
aturan untuk memastikan bahwa kait git telah diinstal (atau untuk menginstalnya).Tapi sungguh, ini lebih merupakan masalah sosial daripada masalah teknis . Anda ingin tim Anda melakukan kode yang bersih dan diformat dengan baik, dan itu adalah aturan sosial dari proyek Anda. (Tidak selalu ada jawaban teknis untuk setiap masalah sosial).
Kontrol versi sebagian besar adalah alat untuk membantu komunikasi antara pengembang manusia (termasuk diri Anda sendiri beberapa bulan dari sekarang). Perangkat lunak Anda tidak perlu VC atau format, tetapi tim Anda melakukannya.
BTW, komunitas yang berbeda dan bahasa pemrograman yang berbeda memiliki pandangan berbeda tentang pemformatan kode. Misalnya, Go hanya memiliki satu gaya pemformatan kode, tetapi C atau C ++ memiliki banyak dari mereka.
sumber
Saya pikir itu ide yang buruk. Banyak jawaban yang sudah dibahas bahwa itu memecah sejarah dengan membuatnya sulit untuk menentukan siapa yang sebenarnya menambahkan garis dan bahwa itu mendorong orang untuk hanya melakukan apa pun dan format-bot akan menanganinya.
Pendekatan yang lebih baik adalah dengan memasukkan pemeriksa format ke alat build Anda. (Di Jawa ada Checkstyle ) Kemudian, hanya izinkan orang untuk menggabungkan cabang mereka ke cabang utama jika build melewati (termasuk pemformatan).
Jika Anda mengizinkan orang untuk melakukan langsung ke cabang utama (seperti dalam Subversion misalnya) maka Anda masih perlu memastikan semua orang memiliki disiplin untuk melakukan hanya kode yang diformat (atau server hanya menerima komit setelah beberapa pemeriksaan telah dijalankan ).
sumber
Secara umum, saya pikir itu ide yang buruk. Pada prinsipnya itu adalah ide yang valid, tetapi pada kenyataannya bisa bermasalah. Membuat pemecah kode pemecah kode Anda adalah kemungkinan yang nyata, dan hanya perlu satu kali pemformatan untuk membuat pengembang Anda merespons dengan permusuhan (mungkin dibenarkan) (mis. "Pemformat kode buruk Anda merusak build, matikan sekarang! " ).
Dalam nada yang sama dengan rekomendasi @ BasileStarynkevitch, kami menggunakan kait pasca-penerimaan git sisi server untuk mengirim "email penasihat" tentang gaya kode.
Jika saya mendorong komit yang berisi pelanggaran gaya, server asal git akan mengirim saya email yang memberitahu saya bahwa saya melanggar pedoman gaya dan merekomendasikan agar saya memperbaiki kode saya. Namun, ini tidak menegakkan ini karena mungkin ada alasan yang sah untuk melanggar gaya rumah (string panjang melebihi batas panjang garis, misalnya).
Jika ini adalah masalah sistemik yang merusak basis kode, mungkin sudah saatnya untuk mulai memunculkan masalah gaya kode dalam ulasan kode. Gaya kode yang buruk dapat menutupi bug dan membuat kode lebih sulit dibaca, sehingga bisa menjadi masalah ulasan kode yang valid.
Untuk menambah aspek "masalah sosial", ada baiknya mendorong orang untuk memperbaiki cacat kosmetik dan gaya saat mereka menemukannya. Kami memiliki pesan komit standar "Kosmetik." untuk perbaikan gaya kode yang diketahui pengembang lain tidak mengandung perubahan yang melanggar.
Seperti kata @DocBrown, opsi lain adalah untuk menegakkan gaya kode dalam IDE Anda. Kami menggunakan CodeMaid dengan Visual Studio untuk memperbaiki banyak kesalahan gaya umum. Ini akan berjalan saat menyimpan file kode, artinya kode gaya buruk seharusnya tidak pernah membuatnya menjadi repo ... dalam teori :-).
sumber
Ya, saya pikir itu ide yang buruk. Jangan salah paham, alasan untuk melakukannya kedengarannya hebat, tetapi hasilnya masih bisa mengerikan.
Anda akan memiliki konflik menggabungkan ketika menarik cabang dilacak, setidaknya aku takut itu akan terjadi, aku mungkin salah.
Saya tidak ingin mengujinya sekarang di tempat kerja, tetapi Anda harus mencobanya sendiri.
Bahkan Anda bisa melihat komit terbaru. Buat cabang baru, lakukan sesuatu yang kecil, cherry pick atau gabung tanpa autocommit.
Kemudian jalankan skrip Anda, tarik dan jika hasilnya adalah kekacauan gabungan yang mengerikan, maka Anda pasti tidak melakukan ini, di siang hari.
Alih-alih, Anda berpotensi memasukkannya ke bangunan malam atau bangunan mingguan.
Tetapi bahkan setiap malam mungkin merupakan ide yang buruk.
Anda bisa menjalankannya setiap minggu, ketika Anda yakin tidak ada konflik gabungan yang akan muncul karena semuanya selesai pada hari Senin.
Kalau tidak, jalankan 1-2 kali setahun pada musim liburan, ketika konflik gabungan tidak akan terjadi.
Tetapi solusinya mungkin tergantung pada prioritas Anda untuk gaya kode.
Saya pikir membuat skrip setup yang secara otomatis membuat repositori git dan menetapkan hook untuk proyek akan lebih baik.
Atau Anda mungkin memasukkan skrip setup hook ke dalam folder untuk devs Anda di dalam proyek dan cukup memeriksanya di git itu sendiri.
sumber
Sesuatu yang belum pernah saya lihat sebutkan adalah fakta bahwa kadang-kadang ada alasan yang sah untuk tidak memformat sesuatu berdasarkan seperangkat aturan. Kadang-kadang kejelasan kode ditingkatkan dengan bertentangan dengan pedoman yang diberikan bahwa 99% dari waktu masuk akal. Manusia perlu menelepon itu. Dalam kasus tersebut, pemformatan kode otomatis akan berakhir membuat hal-hal menjadi kurang mudah dibaca.
sumber
Itu ide yang buruk.
Jika salah satu kolega pengembang saya membuat perubahan gratis ke file sumber, itu tidak akan melewati tinjauan kode. Itu hanya membuat hidup lebih sulit untuk semua orang. Ubah kode yang perlu diubah, tidak ada yang lain. Perubahan yang tidak berarti mengarah ke menggabungkan konflik, yang dapat menyebabkan kesalahan, dan hanya membuat pekerjaan yang tidak berguna.
Jika Anda ingin melakukan ini secara teratur, itu hanya mengerikan.
Dan kemudian ada pertanyaan tentang perubahan apa yang dilakukan oleh pemformat kode. Saya menggunakan pemformatan otomatis di editor saya, itu berfungsi dengan cukup baik, dan saya dapat meningkatkan hal-hal ketika pemformatan otomatis kurang sempurna. Jika Anda menggunakan pemformat kode yang melampaui itu, Anda tidak akan memperbaiki kode, Anda akan memperburuknya.
Dan kemudian ada masalah sosial. Ada orang yang ingin memaksa semua orang untuk menggunakan gaya kode mereka, dan ada orang yang lebih fleksibel. Sesuatu seperti ini kemungkinan akan disarankan oleh tipe pengembang "grammer-nazi" (ejaan yang disengaja) yang ingin memaksakan gaya mereka pada orang lain. Harapkan serangan balasan, dan harapkan pengembang yang fleksibel dan biasanya santai akan menyerah.
sumber
Anda tidak menyebutkan VCS yang Anda gunakan tetapi tergantung pada opsi lain adalah memiliki pengait sisi server. VCS seperti git mendukungnya. Anda bisa menginstal hook sisi-sisi yang menjalankan formatter pada versi yang didorong dan kemudian membandingkan file yang diformat dengan versi yang didorong. Jika berbeda, pengembang tidak menggunakan pemformatan yang benar dan server dapat menolak push. Ini akan memaksa devs Anda hanya mendorong kode dengan format yang diinginkan sehingga mendorong mereka untuk menulis kode bersih dari awal, itu akan membuat devs bertanggung jawab karena telah menguji kode yang diformat dengan benar dan membebaskan devs Anda dari keharusan menginstal secara manual sisi klien menghubungkan.
sumber
go fmt
secara otomatis ditolak.Ini adalah pertukaran antara format kode yang lebih bersih dan lebih tepat dan lebih mudah untuk memahami sejarah git. Bergantung pada sifat proyek Anda dan seberapa sering Anda menyelam dalam sejarah git atau menyalahkan untuk memahami apa yang terjadi. Jika Anda mengerjakan sesuatu yang baru dan tidak harus mempertahankan kompatibilitas ke belakang, sejarah biasanya tidak memainkan peran penting.
sumber
Gagasan ini mirip dengan beberapa jawaban lain, tetapi saya tidak dapat mengomentari saran saya.
Salah satu opsi adalah mengatur alias (atau kail, atau apa pun) ke fungsi komit, yang menjalankan pemformat kode pada kode yang akan dikomit sebelum dikomit.
Itu dapat memiliki 2 (atau lebih) hasil:
1) Tunjukkan pada pengguna perubahan yang diajukan dan minta persetujuan mereka untuk menerapkan dan melakukan perubahan.
2) Abaikan perubahan yang diajukan dan lakukan kode asli.
Anda juga dapat menambahkan lebih banyak fleksibilitas untuk opsi-opsi ini, seperti kemampuan untuk mengedit perubahan yang diusulkan dalam opsi 1. Gagasan lain (Tergantung pada seberapa keras Anda ingin mendorong standar pengkodean ini) adalah membuat sistem mengirimi Anda semacam laporan ketika opsi 2 dipilih.
Ini mungkin keseimbangan yang baik untuk memeriksa otomatis semua kode seperti yang Anda inginkan, sambil tetap memungkinkan fleksibilitas bagi pengembang untuk memenuhi kebutuhan mereka. Ini juga memungkinkan opsi untuk tidak 'menolak secara otomatis' kode dengan perbedaan format seperti yang disebutkan dalam jawaban lain. Dengan 'Saya telah meninjau dan menyetujui koreksi pemformatan otomatis; pilihan commit, masih menjaga akuntabilitas pribadi untuk setiap pengembang bekerja dan tidak mengacaukan VCS.
sumber
Saya tidak akan melakukannya di repositori tetapi saya akan melakukannya di save jika alat mendukungnya. Eclipse adalah satu dan selain itu saya akan melakukan pembersihan kode termasuk penyortiran.
Bagian yang bagus adalah bahwa itu adalah bagian dari proyek sehingga setiap pengembang akan mendapatkannya untuk proyek mereka.
Sebagai bonus tambahan, penggabungan akan disederhanakan secara signifikan karena banyak hal tidak akan terjadi.
Ulasan kode akan mencegah kesalahan.
Tempat lain yang akan saya lakukan adalah memilikinya bagian dari membangun. Dalam kasus saya, saya memilikinya sehingga maven build akan memformat ulang XML dan membersihkan file pom dan memformat ulang kode.
Dengan begitu ketika pengembang siap untuk mendorongnya semua akan dibersihkan untuk permintaan tarik mereka.
sumber