This library provides a linter for the metadata in Emacs Lisp files which are intended to be packages. You can integrate it into your build process.
which uses this code to conveniently display packaging errors while
writing elisp packages. This code was extracted from
flycheck-package.el. We eventually want to use it for MELPA -- it
will need to learn how to check multi-file packages, which was always
going to be out of scope for
The recommended way to get
package-lint is as a package from the MELPA
repository. The version of
package-lint there will always be
up-to-date. There are also packages in MELPA Stable, which
track the latest numbered tag.
Use the command
package-lint-current-buffer interactively, or use
package-lint-buffer if linting programmatically.
If you're a package author, you can include
package-lint in your
build process by ensuring that the package is installed, and then
using the function
package-lint-batch-and-exit to lint your files --
run-tests.sh in this repo for an example.
Additional checks for future versions:
- WARN: header line formatting / capitalisation
- trailing line presence / formatting
- WARN: library is called *-mode but doesn't provide a major mode
- non-use of standard keywords
- checkdoc failures for interactive functions / defcustoms
- trailing whitespace?
- themes which aren't in a matching *-theme.el file
- use of unsafe local variables
- use of emacs version dependencies
- local variable set in header line
- using commentary to talk about load[- ]path and installation
- lack of autoloads
- references to README files which won't be bundled in a package
- use of CamelCase identifiers
- Defining a
-modefunction directly instead of using
- Referring to
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
See COPYING for details.