package-lint
This library provides a linter for the metadata in Emacs Lisp files which are intended to be packages.
Currently these checks are only activated if a Package-Requires
or
Package-Version
header is present in the file, or if non-nil force
is passed to package-lint-buffer
, and checks center on the validity of
the data in that header.
See flycheck-package,
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 flycheck-package
.
Installation
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.
Roadmap
Additional checks for future versions:
- WARN: header line formatting / capitalisation
- trailing line presence / formatting
- URL header presence
- URL header value is a single valid http(s) URL
- WARN: library is called *-mode but doesn't provide a major mode
- WARN: suggest cl-lib vs cl
- non-use of standard keywords
- checkdoc failures for interactive functions / defcustoms
- presence of :group for each defcustom / defgroup
- trailing whitespace?
- themes which aren't in a matching *-theme.el file
- files lacking a (provide ...) which matches their name
- use of unsafe local variables
- use of emacs version dependencies
- local variable set in header line
- use of nadvice.el without depending on Emacs 24.4
- non-empty commentary
- using commentary to talk about load[- ]path and installation
- lack of autoloads
- references to README files which won't be bundled in a package
- dependencies on unavailable packages / versions
- use of CamelCase identifiers
License
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.
Credits
flycheck-package
was written by
Steve Purcell with significant
contributions from Fanael Linithien.
Author links: