Lihatlah penggunaan supressionCommentFilter di http://checkstyle.sourceforge.net/config_filters.html#SuppressionCommentFilter . Anda harus menambahkan modul ke checkstyle.xml Anda
<module name="SuppressionCommentFilter"/>
dan itu dapat dikonfigurasi. Dengan demikian Anda dapat menambahkan komentar ke kode Anda untuk mematikan checkstyle (di berbagai level) dan kemudian kembali lagi melalui penggunaan komentar dalam kode Anda. Misalnya
//CHECKSTYLE:OFF
public void someMethod(String arg1, String arg2, String arg3, String arg4) {
//CHECKSTYLE:ON
Atau bahkan lebih baik, gunakan versi yang lebih tweak ini:
<module name="SuppressionCommentFilter">
<property name="offCommentFormat" value="CHECKSTYLE.OFF\: ([\w\|]+)"/>
<property name="onCommentFormat" value="CHECKSTYLE.ON\: ([\w\|]+)"/>
<property name="checkFormat" value="$1"/>
</module>
yang memungkinkan Anda untuk mematikan pemeriksaan khusus untuk baris kode tertentu:
//CHECKSTYLE.OFF: IllegalCatch - Much more readable than catching 7 exceptions
catch (Exception e)
//CHECKSTYLE.ON: IllegalCatch
* Catatan: Anda juga harus menambahkan FileContentsHolder
:
<module name="FileContentsHolder"/>
Lihat juga
<module name="SuppressionFilter">
<property name="file" value="docs/suppressions.xml"/>
</module>
di bawah SuppressionFilter
bagian pada halaman yang sama, yang memungkinkan Anda untuk mematikan cek individu untuk sumber daya pola yang cocok.
Jadi, jika ada di checkstyle.xml Anda:
<module name="ParameterNumber">
<property name="id" value="maxParameterNumber"/>
<property name="max" value="3"/>
<property name="tokens" value="METHOD_DEF"/>
</module>
Anda dapat mematikannya di file xml penindasan Anda dengan:
<suppress id="maxParameterNumber" files="YourCode.java"/>
Metode lain, sekarang tersedia di Checkstyle 5.7 adalah untuk menekan pelanggaran melalui @SuppressWarnings
anotasi java. Untuk melakukan ini, Anda perlu menambahkan dua modul baru ( SuppressWarningsFilter
dan SuppressWarningsHolder
) di file konfigurasi Anda:
<module name="Checker">
...
<module name="SuppressWarningsFilter" />
<module name="TreeWalker">
...
<module name="SuppressWarningsHolder" />
</module>
</module>
Kemudian, dalam kode Anda, Anda dapat melakukan hal berikut:
@SuppressWarnings("checkstyle:methodlength")
public void someLongMethod() throws Exception {
atau, untuk banyak penindasan:
@SuppressWarnings({"checkstyle:executablestatementcount", "checkstyle:methodlength"})
public void someLongMethod() throws Exception {
NB:checkstyle:
Awalan " " adalah opsional (tetapi disarankan). Menurut dokumen nama parameter harus dalam huruf kecil semua, tetapi praktek menunjukkan setiap kasus berfungsi.
//CHECKSTYLE.OFF:
dan kemudian lupa untuk menyalakannya lagi, apakah akan tetap diperiksa hanya dalam file yang berisi//CHECKSTYLE.OFF:
atau semua file yang diproses selanjutnya juga?@SuppressWarnings("checkstyle:VariableDeclarationUsageDistance")
bekerja dengan baik bagi saya sebagai setara dengan huruf kecil.TreeWalker
, danFileContentHolder
tidak diperlukan (tersedia) lagi.Jika Anda lebih suka menggunakan anotasi untuk membungkam secara selektif aturan, ini sekarang mungkin menggunakan
@SuppressWarnings
anotasi, dimulai dengan Checkstyle 5.7 (dan didukung oleh Plugin Checkstyle Maven 2.12+).Pertama, di Anda
checkstyle.xml
, tambahkanSuppressWarningsHolder
modul keTreeWalker
:Selanjutnya, aktifkan yang
SuppressWarningsFilter
ada (sebagai saudara kandungTreeWalker
):Sekarang Anda dapat membuat anotasi misalnya metode yang ingin Anda kecualikan dari aturan Checkstyle tertentu:
The
checkstyle:
awalan dalam argumen untuk@SuppressWarnings
opsional, tapi saya seperti itu sebagai pengingat di mana peringatan ini berasal. Nama aturan harus huruf kecil.Terakhir, jika Anda menggunakan Eclipse, itu akan mengeluh tentang argumen yang tidak diketahui:
Anda dapat menonaktifkan peringatan Eclipse ini di preferensi jika Anda suka:
sumber
Yang juga berfungsi dengan baik adalah SuppressWithNearbyCommentFilter yang menggunakan komentar individu untuk menekan acara audit.
Sebagai contoh
Untuk mengonfigurasikan filter sehingga PERIKSA PERKEMBANGAN periksa UNTUK BERIKUTNYA var LINES menghindari memicu audit untuk pemeriksaan yang diberikan untuk baris saat ini dan baris var berikutnya (untuk total var + 1 baris):
http://checkstyle.sourceforge.net/config.html
sumber
CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINES?
yang akan membuat perintah abaikan lebih mudah dibaca. (Anda dapat menggunakan "PERIKSA PERIKSA LEBIH LANJUT UNTUK NEXT 1 LINE" dan "PERIKSA PERIKSA SELANJUTNYA UNTUK NEXT 3 LINES").CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINE
juga berfungsi untuk saya (cocok dengan keduanyaline
danlines
).Setiap jawaban yang mengacu pada SuppressWarningsFilter tidak memiliki detail penting. Anda hanya dapat menggunakan id semua-huruf kecil jika itu didefinisikan seperti itu di checkstyle-config.xml Anda. Jika tidak, Anda harus menggunakan nama modul asli.
Misalnya, jika di checkstyle-config.xml saya, saya punya:
Saya tidak bisa menggunakan:
Namun saya harus menggunakan:
Agar sintaks pertama berfungsi, checkstyle-config.xml harus memiliki:
Inilah yang berhasil bagi saya, setidaknya dalam versi CheckStyle 6.17.
sumber
Saya mengalami kesulitan dengan jawaban di atas, berpotensi karena saya mengatur peringatan checkStyle menjadi kesalahan. Apa yang berhasil adalah SuppressionFilter: http://checkstyle.sourceforge.net/config_filters.html#SuppressionFilter
Kelemahan dari ini adalah bahwa rentang baris disimpan dalam file suppresssions.xml terpisah, sehingga pengembang yang tidak terbiasa mungkin tidak segera membuat koneksi.
sumber
Untuk mengonfigurasi filter untuk menekan acara audit antara komentar yang berisi baris BEGIN GENERATED CODE dan komentar yang berisi baris END GENERATED CODE:
Lihat lebih lanjut
sumber
Anda dapat mencoba https://checkstyle.sourceforge.io/config_filters.html#SuppressionXpathFilter
Anda dapat mengonfigurasinya sebagai:
Hasilkan penindasan Xpath menggunakan CLI dengan opsi -g dan tentukan output menggunakan switch -o.
https://checkstyle.sourceforge.io/cmdline.html#Command_line_usage
Berikut ini cuplikan semut yang akan membantu Anda mengatur generasi otomatis penindasan Checkstyle Anda:
The suppressions-xpath.xml ditentukan sebagai sumber penindasan Xpath dalam konfigurasi aturan Checkstyle. Dalam cuplikan di atas, saya memuat classpath Checkstyle dari file cs.cp ke properti. Anda dapat memilih untuk menentukan classpath secara langsung.
Atau Anda dapat menggunakan asyik dalam Maven (atau Ant) untuk melakukan hal yang sama:
Satu-satunya kelemahan dengan menggunakan penindasan Xpath --- selain cek itu tidak mendukung --- adalah jika Anda memiliki kode seperti berikut:
Penindasan Xpath yang dihasilkan dalam kasus ini tidak dicerna oleh Checkstyle dan pemeriksa gagal dengan pengecualian:
Menghasilkan penindasan Xpath direkomendasikan ketika Anda telah memperbaiki semua pelanggaran lainnya dan ingin menekan sisanya. Itu tidak akan memungkinkan Anda untuk memilih contoh spesifik dalam kode untuk ditekan. Anda dapat, bagaimanapun, memilih dan memilih penindasan dari file yang dihasilkan untuk melakukan hal itu.
Untuk menentukan aturan tertentu, file atau pesan kesalahan, SuppressionXpathSingleFilter akan lebih cocok.
https://checkstyle.sourceforge.io/config_filters.html#SuppressionXpathSingleFilter
sumber