Skip to main content

Lints an HTML5 file using Google's style guide

Project description

HTML Linter

https://badge.fury.io/py/html-linter.png https://travis-ci.org/deezer/html-linter.png?branch=master https://coveralls.io/repos/deezer/html-linter/badge.png?branch=master

HTML Linter is an HTML5 linter that follows the style guide defined by Google.

Motivation

Handling HTML5 files generated by lots of different of people is a difficult task, because the standard is evolving quite fast and also because browsers are quite open to accept any malformed/invalid/incomplete input.

That’s why we decided to have an automated tool to check our coding standard.

We start with the Google standard and we enhance it with some extra rules deinfed by the project html-minifier. You can read his detailed article.

The list of extra rules we added are:

  • Boolean attributes should not have an explicit value.

  • Do not use the name attribute in a tags.

  • Do not use the language attribute in script tags.

  • Do not use the charset attribute in script tags when there is no source.

  • Javascript:void(0) links are evil.

  • onclick=’javascript: …’ is not required. This will raise also a Concerns Separation error.

  • meta http-equiv: use only standard properties + X-UA-compatible

  • No extra whitespaces between attributes or before the opening or closing tag.

What is missing?

Check if the file has BOM.

The abbility to validate the HTML using the tool HTML5 tidy and to integrate some schema.org or microdata validator.

However, we do not have any short terms plans to handle the latter, due to a couple of reasons:

  • Tidy can be easily integrated using the tool git-lint

  • Any other validator can also be integrated with git-lint

  • Adding any extra validator would pull many more dependencies and change the scope.

Limitations

html_linter used the project template-remover to remove the PHP and Jinja markup from the files and this project works has some limitations.

One example that won’t work is the following:

<?php echo "?>" ?>

The reason it does not work is because when the method sees the first ‘?>’ (the one inside the string), it thinks it’s a closing tag.

Example use

Below are example of how template_remover.py is used:

$ html_lint.py filename.html

Installation

You can install, upgrade or uninstall html-linter with these commands:

$ pip install html-linter
$ pip install --upgrade html-linter
$ pip uninstall html-linter

Python Versions

Python 2.7 is officially supported, 3.2, 3.3 and 3.4 should also work.

Development

Help for this project is more than welcomed, so feel free to create an issue or to send a pull request via http://github.com/deezer/html-linter.

Tests are run using nose, either with:

$ python -R setup.py nosetests
$ nosetests

Use the tool git-lint before any commit, so errors and style problems are caught early.

TODOS and Possible Features

  • Make the output less verbose.

  • Integrate with HTML5 tidy.

  • Integrate with a schema.org/micrdata validator.

Changelog

v0.1 (2014-05-07)

  • Initial commit.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

html-linter-0.1.7.tar.gz (19.9 kB view details)

Uploaded Source

File details

Details for the file html-linter-0.1.7.tar.gz.

File metadata

  • Download URL: html-linter-0.1.7.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for html-linter-0.1.7.tar.gz
Algorithm Hash digest
SHA256 47fa0d0734ee4db790253dca95e1adee4a5954d7a467a9a181346552dc0ede42
MD5 edc3189e43fb9925fd271c15fab08561
BLAKE2b-256 45e16d26e9df4670e94601902789dd5e4662ff6c4b9c110256a97803624ff91b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page