Weblint is a Perl script which picks fluff off HTML pages.
Files to be checked are passed on the command-line:
.RS
.ft CW
% weblint foobar.html ./dodgy-files/ index.html
.ft P
.RE
If any of the arguments are directories weblint will recurse
in the directory, and check any HTML files found.
If an argument is a URL, then weblint will get the file
using a URL retrieval program, and then check the file:
.RS
.ft CW
% weblint http:// www.foobar.com/
.ft P
.RE
By default weblint will use lynx to retrieve URLs,
but this can be over-ridden.
A filename of `-' specifies that weblint should read from standard input:
.RS
.ft CW
% lynx -source http:// www.foobar.com/ | weblint -
.ft P
.RE
Warnings are generated a la lint:
.RS
.ft CW
home.html(9) : unmatched </A> (no matching <A> seen).
.ft P
.RE
Weblint includes the following features:
.lS
.lI "by default checks for HTML 3.2 (Wilbur)"
.lI "46 different checks and warnings"
.lI "Warnings can be enabled/disabled individually, as per your preference"
.lI "basic structure and syntax checks"
.lI "warnings for use of unknown elements and element attributes."
.lI "context checks (where a tag must appear within a certain element)."
.lI "overlapped or illegally nested elements."
.lI "do IMG elements have ALT text?"
.lI "flags obsolete elements."
.lI "support for user and site configuration files"
.lI "stylistic checks"
.lI "checks for html which is not portable across all browsers"
.lI "flags markup embedded in comments, since this can confuse some browsers"
.lI "support for Netscape, and Microsoft HTML extensions"
.lE
slide : X
OPTIONS
.tS
.tI "-d warning-identifier "
Disable the warning associated with the identifier.
Multiple identifiers can be specified,
with a comma between identifiers.
.tI "-e warning-identifier "
Enable the warning associated with the identifier.
Multiple identifiers can be specified,
with a comma between identifiers.
.tI "-f config-file "
Specify a weblint configuration file which should be used in place
of the user's default config file, or the site configuration file.
.tI -help
Show a short usage summary.
.tI "-i"
Ignore case of element tags.
.tI "-l"
When recursing in directories,
ignore any files which are symlinks (also known as soft links).
This will also cause files on the command-line to be ignored if they
are symlinks, unless only one file is given.
.tI -pedantic
Turn on all warnings except the case-sensitive and bad-link warnings.
.tI -s
Generate `short' warning messages,
which do not include the filename.
.tI "-stderr"
Print warning messages to STDERR rather than STDOUT.
.tI -t
Enable terse warning mode,
which is mainly useful for the weblint testsuite.
.tI -U
Same as -help.
.tI "-urlget command "
The command which should be used to retrieve HTML pages specified by URL.
.tI -v
Display the version number.
.tI -version
Display the version number.
.tI -todo
This prints out the URL for the online version of the weblint ToDo list.
This includes known bugs, and requested/planned features.
.tI -warnings
List all supported warnings, with warning identifier,
and whether the warning is enabled.
.tI "-x extension "
Include checks for the specified HTML extension;
multiple extensions can be specified, separated with a comma.
Currently the only extensions supported are Netscape and Microsoft .
This can also be set in your weblint configuration file,
described below.
.tE
slide : X
"HTML EXTENSIONS"
Unless you specify otherwise, weblint assumes you are using HTML 3.2.
Weblint supports the Netscape and Microsoft HTML extensions in addition.
For example, weblint will complain that the BLINK
element is not known,
unless you enable the
"Netscape"
extension.
The following extensions are currently supported:
.tS
.tI "Netscape"
The HTML extensions supported by the Netscape browser, version 4.
.tI "Microsoft"
The HTML extensions supported by Microsoft Internet Explorer, version 4.
.tE
To enable an extension, you can either use the -x command-line
switch:
\f(CW\s-2% weblint -x Netscape foobar.html\s+2
Or you can use the extension keyword in your .weblintrc :
\f(CW\s-2# enable the Microsoft extensions
extension Microsoft\s+2
slide : X
"CONFIGURATION FILE"
Weblint can be configured using a file .weblintrc
in your home directory (or a file referenced by the WEBLINTRC
environment variable).
This file can be used to enable or disable specific warnings,
set weblint variables, and include HTML extensions,
as described above.
Each warning has a short identifier string, used to refer to
the warning in config files, and from the command-line.
For example, if you want to enable the check for tags in upper-case,
but disable the check for obsolete elements,
then you would include the following lines in your .weblintrc:
.RS
.ft CW
.ps -2
# specify the command used to retrieve URLs (-urlget switch)
set url-get = lynx -source
# the style of warning message to generate (lint, short, or terse)
set message-style = lint
# enable warning for tags not in upper-case
enable upper-case
# disable the warning for obsolete tags
disable obsolete
# enable the Netscape HTML extensions
extension Netscape
# when recursing in a directory,
# ignore files which are symlinks (also known as soft links)
ignore symlinks
.ps +2
.ft P
.RE
The keywords can be followed by any number of arguments,
separated by spaces or tabs.
Anything following a `#' is treated as a comment.
A sample configuration file is included in the weblint distribution
(as of version 1.004),
which mirrors the configuration built-in to weblint.
Weblint also supports a site configuration file.
If a user does not have a personal configuration file,
then weblint will check for a local site configuration file.
To provide such a file,
create a directory such as /usr/local/weblint,
and create a file global.weblintrc.
You need to edit the weblint script and modify the SITE_DIR variable,
which you will find near the top of the file.
For example:
\f(CW\s-2\$SITE_DIR = '/usr/local/weblint';\s+2
At some point in the future there will be configuration support for
weblint, so you won't have to modify the script directly yourself.
If you have a site configuration file,
then users can inherit the site defaults by adding the following line
at the top of their .weblintrc file:
\f(CW\s-2use global weblintrc\s+2
slide : X
WARNINGS
All warnings generated by weblint are listed below,
along with the associated identifier,
and whether the warning is enabled or disabled by default.
.wS
.iD upper-case disabled "tag <...> is not in upper case."
.iD lower-case disabled "tag <...> is not in lower case."
.iD required-attribute enabled "\f(BIfoo attribute is required for <...>"
.iD expected-attribute enabled "expected an attribute for <...>"
.iD unknown-element enabled "unknown element <...>"
.iD unknown-attribute enabled "unknown attribute `...' for element <...>."
.iD leading-whitespace enabled "should not have whitespace between `<' and `...>'"
.iD here-anchor enabled "bad form to use `here' as an anchor!"
.iD require-head enabled "no
in HEAD element."
.iD once-only enabled "tag <...> should only appear once. I saw one on line XX!"
.iD body-no-head enabled " but no ."
.iD html-outer enabled "outer tags should be .. ."
.iD head-element enabled "<...> can only appear in the HEAD element."
.iD non-head-element enabled "<...> cannot appear in the HEAD element."
.iD obsolete enabled "<...> is obsolete."
.iD mis-match enabled "unmatched (no matching <...> seen)."
.iD img-alt enabled "IMG does not have ALT text defined."
.iD nested-element enabled "<...> cannot be nested."
.iD mailto-link disabled "Did not see mailto:... > in HEAD."
.iD element-overlap enabled " on line XX seems to overlap <...>, opened on line YY."
.iD unclosed-element enabled "no closing seen for <...> on line XX."
.iD markup-in-comment enabled "markup embedded in a comment can confuse some browsers."
.iD odd-quotes enabled "odd number of quotes in element <...>."
.iD heading-order enabled "heading follows on line N."
.iD bad-link disabled "target for anchor "..." not found."
.iD unexpected-open enabled "unexpected < in <...> -- potentially unclosed element."
.iD required-context enabled "illegal context for <...> - must appear in <...> element."
.iD unclosed-comment enabled "unclosed comment (comment should be: "
.iD illegal-closing enabled "element <...> is not a container -- not legal."
.iD physical-font disabled "<...> is physical font markup -- use logical (such as XXX)"
.iD repeated-attribute enabled "attribute XYZ is repeated in element <...>"
.iD empty-container enabled "empty container element <...>"
.iD attribute-delimiter enabled "use of ' for attribute value delimiter is not supported by all browsers (attribute XYZ of tag ABC)"
.iD closing-attribute enabled "closing tag <...> should not have any attributes specified."
.iD directory-index enabled "directory DIR does not have an index file (index.html)"
.iD must-follow enabled "<...> must immediately follow <...>"
.iD img-size disabled "setting WIDTH and HEIGHT attributes on IMG tag can improve rendering performance on some browsers"
.iD container-whitespace disabled "leading/trailing whitespace in content of container element ..."
.iD require-doctype disabled "first element was not DOCTYPE specification"
.iD literal-metacharacter enabled "`>' should be represented as `>'"
.iD heading-mismatch enabled "malformed heading - open tag is , but closing is "
.iD bad-text-context enabled "illegal context, <...>, for text; should be in XXX."
.iD attribute-format enabled "illegal value for AAA attribute of XXX (...)"
.iD extension-markup enabled "<...> is extended markup (use '-x ' to allow this)."
.iD extension-attribute enabled "attribute `...' for <...> is extended markup (use '-x ' to allow this)."
.iD quote-attribute-value enabled "value for attribute XYZ (xyz-value) of element FOOBAR should be quoted (i.e. XYZ='xyz-value')"
.iD meta-in-pre enabled "you should use '>' in place of '>', even in a PRE element."
.iD heading-in-anchor enabled " should be inside , not inside ."
.iD title-length enabled "The HTML spec. recommends the TITLE be no longer than 64 characters."
.wE
slide : X
""
slide : X
"TESTSUITE"
A simple regression testsuite is included with weblint,
in the Perl script \f(CW\s-2test.pl\s+2.
You can run the testsuite with either of the following commands:
\f(CW\s-2% make test
% ./test.pl\s+2
The results are printed to STDERR,
with a more complete report generated in test.log.
All tests should pass.
If any tests fail, please email test.log to the address given
in the AUTHOR section below.
slide : X
"ENVIRONMENT VARIABLES"
.tS
.tI "WEBLINTRC"
If this variable is defined, and references a file,
then weblint will read the referenced file for the user's configuration,
rather than
HOME/.weblintrc.
.tI "TMPDIR"
The directory where weblint will create temporary working files.
Defaults to /usr/tmp.
.tE
slide : X
FILES