El peine es una solución nativa de emacs lisp para buscar, navegar y anotar ocurrencias de expresiones regulares en archivos. La interfaz interactiva permite realizar una clasificación exhaustiva de todos los resultados para descartar falsos positivos y evaluar las coincidencias adecuadas durante la auditoría del código.
M-x package-install RET comb
M-x package-install-file RET /path/to/comb/
( add-to-list 'load-path " /path/to/comb/ " )
( require 'comb )Este es un tutorial rápido de algunas de las características del peine. Para realizar una búsqueda:
Muévase al directorio raíz del repositorio que desea auditar;
ejecutar Mx comb ;
Presione c para ingresar al modo de configuración;
Llene los campos deseados y finalmente realice una búsqueda.
Si hay algunos resultados para navegar, entonces se muestra el búfer *Comb* , desde aquí es posible anotar los resultados ( ! ) Y cambiar su estado a aprobado ( a / A ), rechazado ( r / R ) o indeciso ( u / U , el valor predeterminado).
Las acciones anteriores funcionan en el resultado actual que se puede mover al siguiente ( n ) o el anterior ( p ) anterior, al hacerlo, el búfer *Comb* se actualiza para mostrar el archivo que contiene el resultado, que ahora se resalta. Solo se muestran los resultados que coinciden con el filtro de estado (ciclado con f ) y el filtro de notas regexp (establecido con F ). Además de eso, t genera un búfer que contiene la lista de los resultados actualmente mostrados, esto permite investigar los fragmentos y saltar al resultado en el punto.
Finalmente, es posible guardar la sesión actual en s y cargarlo para reanudar la auditoría ( l ).
Consulte la ayuda ( h ) para obtener una lista de todas las características y paneles de teclas.
Los patrones utilizados por el peine son regexps con sabor a emacs (ver el nodo de información (elisp) Regular Expressions ). La utilidad Mx regexp-builder se puede usar para probar interactivamente los Regexps antes de realizar una búsqueda, solo asegúrese de usar la sintaxis adecuada ( Cc TAB string ) y dejar de lado los alrededores " .
COWN también acepta una lista de devoluciones de llamada que se pueden usar para generar resultados de búsqueda adicionales, por ejemplo, provenientes de una herramienta de pelusa externa. Estas funciones se ejecutan con el conjunto default-directory en el directorio raíz y el conjunto de búfer actual en el archivo procesado actualmente, aceptan una ruta relativa como argumento y deben devolver una lista de rangos en el formulario (BEGIN . END) .
Aquí hay un ejemplo de devolución de llamada:
( defun my-callback ( filename )
" Match only the first occurrence of 'qwerty'. "
( when ( re-search-forward " qwerty " nil t )
( list ( cons ( match-beginning 0 ) ( match-end 0 ))))) Los errores en la ejecución de la devolución de llamada no son fatales, solo se informan en el búfer *Messages* .
Algunas caras y opciones se pueden configurar, eche un vistazo al grupo de personalización comb ( Mx customize-group RET comb ).
Además, todas las fallas de teclas en el tampón *Comb* se pueden alterar cambiando el keymap comb-keymap . Por ejemplo, para usar las flechas para navegar por el uso de resultados:
( define-key comb-keymap ( kbd " <left> " ) 'comb-prev )
( define-key comb-keymap ( kbd " <right> " ) 'comb-next )Sin embargo, esto no desactiva las Keybindings originales. Puede ser conveniente reemplazar completamente el keymap en su lugar para evitar colisiones con los modos existentes:
( setq comb-keymap ( make-sparse-keymap ))
( define-key comb-keymap ( kbd " x " ) 'comb-quit )
( define-key comb-keymap ( kbd " ? " ) 'comb-help )
( define-key comb-keymap ( kbd " <left> " ) 'comb-prev )
( define-key comb-keymap ( kbd " <right> " ) 'comb-next )
; ; ... Consulte el alist de la defensa comb-default-keybindings para obtener las funciones utilizadas por las tallas de teclas predeterminadas.