Version 1.21 of package Relint has just been released in GNU ELPA. You can now find it in M-x list-packages RET.
Relint describes itself as: =========================== Elisp regexp mistake finder =========================== More at https://elpa.gnu.org/packages/relint.html ## Summary: relint -- Emacs regexp mistake finder ===================================== Relint scans Emacs Lisp files for mistakes in regexps, including deprecated syntax and bad practice. It also checks the regexp-like arguments to the functions skip-chars-forward, skip-chars-backward, skip-syntax-forward and skip-syntax-backward. * Contents - Usage - Installation - What the diagnostics mean - Suppressing diagnostics - How it works - Bugs * Usage - Check a single file: M-x relint-file - Check all .el files in a directory tree: M-x relint-directory - Check current buffer: M-x relint-current-buffer - From batch mode: emacs -batch -l relint.el -f relint-batch FILES-AND-DIRS... ## Recent NEWS: Version 1.21 - Check for duplicates in rx or-forms - Robustness improvements Version 1.20 - More compact distribution Version 1.19 - Progress indicator in `relint-directory' - Some performance improvements - Fix some false positives in the regexp provenance detector - Scan assignments to `font-lock-defaults' correctly - Recognise regexp arguments to functions in the s.el package Version 1.18: - New check for ineffective backslashes in all strings (not just regexps) - Warnings emitted in order of their position in file or buffer - Performance improvements Version 1.17: - Fixed message display on Emacs 26 Version 1.16: - Suppression comments now use regexp matching of messages - New filename-specific checks in calls to `directory-files' etc - Check some keyword arguments (:regexp and :regex) - Improved rx checks - `relint-directory' now displays number of files found Version 1.15: - Improved position accuracy in various lists of regexps - Check for mistake in rx `any' forms - `relint-buffer' now also returns severity (warning, error) - Relint can now also check the *scratch* buffer Version 1.14: - Added `relint-buffer' - Report error position inside string literals when possible - Scan arguments to `search-forward-regexp' and `search-backward-regexp' - Use text quoting for messages Version 1.13: - Look in function/macro doc strings to find regexp arguments and return values - Detect binding and mutation of some known regexp variables - Detect regexps as arguments to `syntax-propertize-rules' - More font-lock-keywords variables are scanned for regexps - `relint-batch' no longer outputs a summary if there were no errors Version 1.12: - Improved detection of regexps in defcustom declarations - Better suppression of false positives - Nonzero exit status upon error in `relint-batch' Version 1.11: - Improved evaluator, now handling limited local variable mutation - Bug fixes - Test suite Version 1.10: - Check arguments to `skip-syntax-forward' and `skip-syntax-backward' - Add error suppression mechanism Version 1.9: - Limited tracking of local variables in regexp finding - Recognise new variable `literal' and `regexp' rx clauses - Detect more regexps in defcustom declarations - Requires xr 1.13 Version 1.8: - Updated diagnostics list - Requires xr 1.12 Version 1.7: - Expanded regexp-generating heuristics - Some `defalias' are now followed - All diagnostics are now documented (see README.org) Version 1.6: - Add `relint-current-buffer' - Show relative file names in *relint* - Extended regexp-generating heuristics, warning about suspiciously-named variables used as skip-sets - "-patterns" and "-pattern-list" are no longer interesting variable suffixes Version 1.5: - Substantially improved evaluator, able to evaluate some functions and macros defined in the same file, even when passed as parameters - Detect regexps spliced into [...] - Check bad skip-set provenance - The *relint* buffer now uses a new relint-mode for better usability, with "g" bound to `relint-again' Version 1.4: - First version after name change to `relint'