Xác thực / linting mã Elisp


8

Hiện tại tôi đang sử dụng:

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

để xác nhận mã Elisp. Điều này đưa tôi một số lỗi ngu ngốc và thật dễ dàng để giải quyết chúng.

Mã dự định có thể được kiểm tra thông qua C-x h C-M-\ C-x C-s M-x vc-diffnếu tập tin theo VCS.

Tôi nên sử dụng phương pháp nào để xác thực mã Elisp cho các lỗi phổ biến?

Câu trả lời:


6

Có một vài lựa chọn khác:

  • elint-defun, elint-file, Và bạn bè được tích hợp để Emacs. elint chủ yếu tìm kiếm các biến không xác định, lỗi chính tả và các lệnh gọi hàm sai. Tôi thấy nó ít được sử dụng, vì trình biên dịch byte ngày nay cũng bắt được hầu hết (nếu không phải tất cả) các lỗi này. Nó cũng rất chậm vì nó cũng phân tích tất cả các thư viện phụ thuộc, và thậm chí tệ hơn, thường xuyên bị sặc trên các macro. Ví dụ, áp dụng elint trên mã sử dụng nhiều pcasemang lại rất nhiều tích cực sai.
  • flycheck-gói cung cấp một số gợi ý hay ngoài trình biên dịch byte và checkdoc. Các nhà bảo trì MELPA sử dụng nó để kiểm tra các gói đã gửi theo như tôi biết và bản thân tôi sử dụng nó trong các gói của mình để bảo vệ chống lại các lỗi định dạng trong các tiêu đề gói.

Tuy nhiên, ngoài điều đó ra, không có gì trên bàn nhuộm cho Emacs Lisp. Đặc biệt, chúng tôi bỏ lỡ các phần tử bắt lỗi cho mã không phổ biến, sử dụng API sai, thiếu thứ gì đó, v.v. Chẳng hạn, không có gì cho bạn biết rằng bạn nên thay thế các tham chiếu ~/.emacs.dtrong mã Elisp của mình bằng user-emacs-directoryhoặc thậm chí tốt hơn locate-user-emacs-file, hoặc cảnh báo về việc defcustombị thiếu :typehoặc :group, Vân vân.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.