Validar / linting código Elisp

8

Actualmente uso:

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

para validar el código de Elisp. Esto me lleva a algunos errores estúpidos y es fácil resolverlos.

La intención del código se puede verificar a través de C-x h C-M-\ C-x C-s M-x vc-diffif file en VCS.

¿Qué métodos debo usar para validar el código de Elisp para errores comunes?

gavenkoa
fuente

Respuestas:

6

Hay un par de otras opciones:

  • elint-defun, elint-filey amigos que están integrados en Emacs. elint busca principalmente variables indefinidas, errores ortográficos y llamadas a funciones incorrectas. Lo encontré de poca utilidad, ya que el compilador de bytes actualmente detecta la mayoría (si no todos) de estos errores también. También es dolorosamente lento, ya que también analiza todas las bibliotecas dependientes y, lo que es peor, se ahoga regularmente en las macros. Por ejemplo, la aplicación de elint en el código que hace un uso intensivo de pcaseentrega una gran cantidad de falsos positivos.
  • flycheck-package proporciona algunas buenas sugerencias más allá del compilador de bytes y checkdoc. Los mantenedores de MELPA lo usan para verificar los paquetes enviados hasta donde yo sé, y yo mismo lo uso en mis paquetes para proteger contra fallas de formato en los encabezados de los paquetes.

Sin embargo, aparte de eso, no hay nada en la mesa de espera para Emacs Lisp. Particularmente, extrañamos linters que detectan código unidiomático, uso incorrecto de API, cosas faltantes, etc. Por ejemplo, no hay nada que le indique que debe reemplazar las referencias a ~/.emacs.dsu código Elisp con user-emacs-directoryo incluso mejor locate-user-emacs-file, o advierte sobre defcustoms con falta :typeo :groupetc.

Lunaryorn
fuente