Kami memiliki aplikasi web PHP 5 dan saat ini kami sedang mengevaluasi PHP CodeSniffer untuk memutuskan apakah memaksa standar kode meningkatkan kualitas kode tanpa menyebabkan terlalu banyak sakit kepala. Jika tampaknya baik, kami akan menambahkan kait pra-komit SVN untuk memastikan semua file baru yang dilakukan pada cabang dev bebas dari pengkodean bau standar.
Apakah ada cara untuk mengkonfigurasi kode PHPNiffer untuk mengabaikan jenis kesalahan tertentu? atau malah memperlakukan kesalahan tertentu sebagai peringatan?
Berikut ini contoh untuk menunjukkan masalah:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div>
<?php
echo getTabContent('Programming', 1, $numX, $numY);
if (isset($msg)) {
echo $msg;
}
?>
</div>
</body>
</html>
Dan ini adalah output dari PHP_CodeSniffer:
> phpcs test.php -------------------------------------------------- ------------------------------ DITEMUKAN 2 KESALAHAN (S) DAN 1 PERINGATAN (S) MEMPENGARUHI 3 LINE (S) -------------------------------------------------- ------------------------------ 1 | PERINGATAN | Baris melebihi 85 karakter; berisi 121 karakter 9 | GALAT | File doc komentar tidak ada 11 | GALAT | Jalur indentasi salah; diharapkan 0 spasi, ditemukan 4 -------------------------------------------------- ------------------------------
Saya memiliki masalah dengan kesalahan " Saluran indentasi salah ". Saya kira itu terjadi karena saya mencampur indentasi PHP dengan indentasi HTML. Tapi ini membuatnya lebih mudah dibaca bukan? ( dengan mempertimbangkan bahwa saya tidak memiliki sumber daya untuk pindah ke kerangka kerja MVC sekarang ). Jadi saya ingin mengabaikannya.
Jawaban:
Saya menemukan solusi untuk menghapus kesalahan " Line indented salah " tetapi pertama-tama saya harus mengatakan bahwa dragonmantank memiliki poin yang sangat bagus - Anda tidak boleh mencampur PHP dan HTML. Ini adalah resep untuk sakit kepala. Namun, sayangnya saya pikir pencampuran PHP dan HTML sangat umum terutama dalam perangkat lunak lama.
Perbaikan tercepat dan paling kotor dengan asumsi kita menggunakan
phpcs
standar pengkodean standar (yang merupakan standar PEAR ) adalah menghapus file Sniff yang relevan. Temukan lokasi standar PEAR, bagi saya, menggunakan Ubuntu , ada di sini:Ganti nama
ScopeIndentSniff.php
file sehingga hirupan yang memeriksa lekukan kode tidak akan lagi dijalankan:Pekerjaan selesai - sekarang indentasi tidak akan diperiksa dan kesalahan " Line indent salah " tidak akan terjadi ( dan kode Anda tidak akan standar dan tidak akan berkualitas tinggi! ).
Solusi di atas cukup amatir - solusi yang lebih bersih adalah membuat standar pengkodean baru yang menggunakan semua standar PEAR kecuali untuk penyesuaian pilihan cherry Anda. Ini sangat cepat dilakukan. Berikut adalah cara melakukannya menggunakan
getIncludedSniffs()
dangetExcludedSniffs()
dan beberapaphpcs
konvensi penamaan:Uji standar pengkodean kustom baru Anda dengan
phpcs
menggunakan--standard
flag. Sebagai contoh:Setelah berfungsi, Anda dapat menetapkan standar baru sebagai standar yang artinya Anda tidak perlu mengetik
--standard
bendera setiap kali menggunakanphpcs
:Lihat manual phpcs untuk informasi lebih lanjut.
sumber
Anda akan mengalami banyak masalah menjalankan PHPCS dengan kode PHP Anda dicampur dengan HTML. PHPCS hanya benar-benar berguna ketika Anda menguraikan skrip PHP murni. Standar pengkodean bawaan dibangun di sekitar PHP murni, bukan PHP / HTML campuran.
Salah satu opsi adalah membangun standar kustom Anda sendiri dan menggunakannya. Standar khusus akan mempertimbangkan pencampuran kode, tetapi mungkin akan sulit untuk menulis.
Opsi lainnya adalah menggunakan sistem templating karena Anda mengatakan Anda tidak ingin pindah ke suatu kerangka kerja. Smarty dan Twig keduanya dapat digunakan di luar kerangka kerja MVC. Pindah ke salah satu dari itu dan kemudian hanya PHPCS parsing file .php, bukan file template.
sumber