Validasi / linting kode Elisp

8

Saat ini saya menggunakan:

(checkdoc)
(byte-compile-file (buffer-file-name))
(package-buffer-info)

untuk memvalidasi kode Elisp. Ini membawa saya beberapa kesalahan bodoh dan mudah untuk menyelesaikannya.

Maksud kode dapat diperiksa melalui C-x h C-M-\ C-x C-s M-x vc-diffjika file di bawah VCS.

Metode apa yang harus saya gunakan untuk memvalidasi kode Elisp untuk kesalahan umum?

gavenkoa
sumber

Jawaban:

6

Ada beberapa opsi lain:

  • elint-defun,, elint-filedan teman yang ada di dalam Emacs. elint terutama mencari variabel yang tidak terdefinisi, kesalahan ejaan, dan panggilan fungsi yang salah. Saya menemukannya sedikit berguna, karena byte compiler saat ini menangkap sebagian besar (jika tidak semua) kesalahan ini juga. Ini juga sangat lambat karena menganalisis semua perpustakaan yang tergantung juga, dan bahkan lebih buruk, secara teratur tersedak makro. Sebagai contoh, menerapkan elemen pada kode yang banyak menggunakan pcasememberikan banyak kesalahan positif.
  • Paket flycheck menyediakan beberapa serat yang bagus di luar byte compiler dan checkdoc. Pengelola MELPA menggunakannya untuk memeriksa paket yang dikirimkan sejauh yang saya tahu, dan saya sendiri menggunakannya dalam paket saya untuk melindungi terhadap kekurangan format pada header paket.

Selain itu, tidak ada apa-apa di atas meja lacing untuk Emacs Lisp. Khususnya, kami kehilangan linter yang menangkap kode tidak langsung, penggunaan API yang salah, hal-hal yang hilang, dll. Misalnya, tidak ada yang memberi tahu Anda bahwa Anda harus mengganti referensi ke ~/.emacs.ddalam kode Elisp Anda dengan user-emacs-directoryatau bahkan lebih baik locate-user-emacs-file, atau memperingatkan tentang defcustomada yang hilang :typeatau :group, dll.

lunaryorn
sumber