Saya menggunakan generator parser yang membuat kode yang agak jelek. Akibatnya, proyek Eclipse saya memiliki beberapa lusin peringatan yang berasal dari file sumber yang dihasilkan. Saya tahu saya dapat menggunakan @SuppressWarning
anotasi untuk menyembunyikan peringatan tertentu dalam elemen tertentu, tetapi anotasi apa pun yang saya tambahkan secara manual akan hilang ketika generator parser berjalan lagi. Apakah ada cara untuk mengkonfigurasi Eclipse untuk menyembunyikan peringatan untuk file atau direktori tertentu?
java
eclipse
suppress-warnings
generated-code
Chris Conway
sumber
sumber
Jawaban:
Dimulai dengan versi 3.8 M6, Eclipse (tepatnya: JDT) memiliki fungsionalitas bawaan untuk ini. Ini dapat dikonfigurasi melalui jalur build proyek : Properti proyek> Java Build Path> Compiler> Source
Diumumkan di sini: Eclipse 3.8 dan 4.2 M6 - Baru dan Patut Disimak , disebut Abaikan kesalahan / peringatan secara selektif dari folder sumber . Dari situlah asal tangkapan layar. Ini adalah fitur baru yang dikembangkan pada Bug 220928 yang ditautkan sebelumnya .
sumber
Ada tiket untuk ini, Bug 220928 , yang telah diselesaikan untuk Eclipse 3.8. Silakan lihat jawaban ini untuk detailnya.
Jika Anda terjebak dengan Eclipse 3.7 atau lebih rendah: Pengguna "Marc" yang mengomentari tiket itu membuat (atau setidaknya menautkan ke) sebuah plugin yang disebut 'warningcleaner' di komentar 35 . Saya menggunakannya dengan sangat sukses sambil menunggu fitur ini diintegrasikan ke dalam Eclipse.
Ini sangat sederhana:
sumber
Saya menyelesaikan ini dengan menggunakan plugin maven regexp replace - itu tidak menyelesaikan penyebabnya, tetapi menyembuhkan rasa sakit:
Perhatikan bahwa saya tidak berhasil membuat notasi ** berfungsi, jadi Anda mungkin harus menentukan jalur dengan tepat.
Lihat komentar di bawah untuk perbaikan tentang bagaimana tidak menghasilkan duplikat @SupressWarnings
sumber
^(@SuppressWarnings\(.*?\)\s+)?public class
. Dengan menyertakan anotasi dalam pola, anotasi tidak akan diduplikasi jika sudah ada.${basedir}/
sebelumnyatarget
di<include>
tag. Rasanya agak tersendat, tetapi karena ini hanya berfungsi pada file yang dihasilkan, saya akan menerimanya!Saya pikir hal terbaik yang dapat Anda lakukan adalah mengaktifkan pengaturan khusus proyek untuk menampilkan peringatan.
Di bagian atas formulir adalah tautan untuk mengonfigurasi pengaturan khusus proyek.
sumber
Pengguna @Jorn mengisyaratkan kode Ant untuk melakukan ini. Inilah yang saya miliki
Perhatikan bahwa Ant's <replace> melakukan penggantian teks, bukan penggantian ekspresi reguler, jadi Ant's tidak dapat menggunakan karakter meta ^ dalam token untuk mencocokkan awal baris seperti yang dilakukan oleh plugin maven regexp replace.
Saya melakukan ini bersamaan dengan menjalankan Antlr dari maven-antrun-plugin di Maven pom saya, karena plugin maven ANTLR tidak berfungsi dengan baik dengan plugin maven Cobertura.
(Saya menyadari ini bukan jawaban untuk pertanyaan asli, tetapi saya tidak dapat memformat kode Ant dalam komentar / balasan untuk jawaban lain, hanya dalam jawaban)
sumber
Saya tidak berpikir Eclipse secara inheren menyediakan cara untuk melakukan ini di tingkat direktori (tapi saya tidak yakin).
Anda dapat membuat file yang dihasilkan masuk ke proyek Java yang terpisah, dan mengontrol peringatan untuk proyek tertentu itu.
Saya biasanya lebih suka menempatkan kode yang dibuat secara otomatis dalam proyek terpisah.
sumber
Anda hanya dapat menyembunyikan peringatan di tingkat proyek. Namun, Anda dapat mengonfigurasi tab masalah Anda untuk menyembunyikan peringatan dari file atau paket. Masuk ke menu Configure Contents dan kerjakan dengan lingkup "On working set:".
sumber
Skrip python kecil ini "menambal"
.classpath
file yang dihasilkan M2E dan menambahkan tag XML yang diperlukan ke semua folder sumber yang dimulai dengantarget/generated-sources
. Anda bisa menjalankannya dari folder root proyek Anda. Jelas Anda perlu menjalankannya kembali ketika informasi proyek Eclipse dihasilkan kembali dari M2E. Dan semua risiko Anda sendiri, jelas ;-)sumber
Saya melakukan ini ke beberapa tata bahasa ANTLR, yang menghasilkan parser Java menggunakan Ant. Skrip build Ant menambahkan
@SuppressWarnings("all")
ke satu file Java, dan@Override
ke beberapa metode di file lain. Saya dapat mencari tahu bagaimana tepatnya dilakukan, jika Anda tertarik.sumber
Dalam kasus ANTLR 2, dimungkinkan untuk menyembunyikan peringatan dalam kode yang dihasilkan oleh appenidng
@SuppressWarnings
sebelum deklarasi kelas dalam file tata bahasa, misalnyasumber
Ini dapat dilakukan dengan mengecualikan direktori tertentu dari jalur build (Contoh berikut diberikan menggunakan Eclipse 3.5)
[1] Munculkan Jalur Build Java
[2] Tambahkan direktori untuk dikecualikan
sumber
Sudah lama sejak saya merilis plugin pembersih-peringatan, dan sekarang saya menggunakan Eclipse 3.8, saya tidak membutuhkannya lagi. Namun bagi yang masih membutuhkan plugin ini, saya sudah merilisnya di github dengan situs update di bintray. Jika Anda masih menggunakan Eclipse 3.7 atau sebelumnya, ini bisa berguna. Periksa situs ini untuk detail penginstalan.
sumber
Jika proyek gerhana dibuat dari gradle menggunakan perintah plugin Eclipse, opsi dapat disetel dengan menambahkan ini di tingkat atas file Anda :
eclipse
Selectively ignore errors/warnings from source folders
build.gradle
Ini mengasumsikan bahwa sumber yang dihasilkan ada di
build/generated/parser
folder.sumber