flycheck – suprimir advertencia: asignación a variable libre (y otras)

Pregunta:

¿Cómo puedo suprimir la advertencia de "asignación a variable libre" al compilar un byte en un archivo lisp de emacs?

De hecho, estoy principalmente interesado en suprimirlo para un búfer específico cuando uso flycheck, pero entiendo que esto simplemente se está transmitiendo al compilador de bytes.

También sería bueno obtener una lista de todas las advertencias / errores que se pueden suprimir.

ACTUALIZAR :
En aras de la integridad, permítame aclarar que hay muchas razones (independientes del lenguaje) para deshabilitar las advertencias del compilador. Algunos ejemplos: para facilitar la transición de código heredado a un marco forzado de lint, para que los archivos de borrador y las recetas se ejecuten en un contexto en vivo, para eliminar el ruido mientras se solucionan problemas de mayor prioridad, o porque el compilador está equivocado.

Respuesta:

Para el beneficio de los lectores despistados que llegan aquí, permítame una pequeña digresión para decir que estas advertencias generalmente apuntan a problemas de código reales (y cuando no lo hacen, puede suprimirlas por variable), por lo que la gente debería investigar lo que significa antes de desactivarlos.

Por supuesto, no tengo ninguna duda de que sabe por qué necesita deshabilitarlo, por lo que la respuesta está a continuación.


La respuesta

Para deshabilitar esta (u otra) advertencia, deberá establecer el valor de byte-compile-warnings . Puede hacer esto como una variable local de archivo agregando el siguiente fragmento al final del archivo.

;; Local Variables:
;; byte-compile-warnings: (not free-vars)
;; End:

También puede configurar esto globalmente.

Puede reemplazar (not free-vars) con (not free-vars callargs unresolved) y cualquier otra advertencia que desee suprimir. La lista completa de advertencias que se pueden incluir / suprimir se encuentra en la cadena de documentos de la variable (a continuación).

byte-compile-warnings is a variable defined in `bytecomp.el'.
Its value is t

  This variable is safe as a file local variable if its value
  satisfies the predicate which is a byte-compiled expression.

Documentation:
List of warnings that the byte-compiler should issue (t for all).

Elements of the list may be:

  free-vars   references to variables not in the current lexical scope.
  unresolved  calls to unknown functions.
  callargs    function calls with args that don't match the definition.
  redefine    function name redefined from a macro to ordinary function or vice
              versa, or redefined to take a different number of arguments.
  obsolete    obsolete variables and functions.
  noruntime   functions that may not be defined at runtime (typically
              defined only under `eval-when-compile').
  cl-functions    calls to runtime functions (as distinguished from macros and
                  aliases) from the old CL package (not the newer cl-lib).
  interactive-only
          commands that normally shouldn't be called from Lisp code.
  lexical     global/dynamic variables lacking a prefix.
  make-local  calls to make-variable-buffer-local that may be incorrect.
  mapcar      mapcar called for effect.
  constants   let-binding of, or assignment to, constants/nonvariables.
  suspicious  constructs that usually don't do what the coder wanted.

If the list begins with `not', then the remaining elements specify warnings to
suppress.  For example, (not mapcar) will suppress warnings about mapcar.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım