sk- / html-linter

HTML5 Linter based on Google Style Guide
Apache License 2.0
7 stars 6 forks source link

HTML Linter

.. image:: https://badge.fury.io/py/html-linter.svg :target: http://badge.fury.io/py/html-linter

.. image:: https://api.travis-ci.org/sk-/html-linter.svg?branch=master :target: https://travis-ci.org/sk-/html-linter

.. image:: https://coveralls.io/repos/sk-/html-linter/badge.svg?branch=master :target: https://coveralls.io/r/sk-/html-linter?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 <https://google.github.io/styleguide/htmlcssguide.html> and we enhance it with some extra rules defined by the project html-minifier <https://github.com/kangax/html-minifier>. You can read his detailed article <http://perfectionkills.com/experimenting-with-html-minifier/#remove_redundant_attributes>_.

The list of extra rules we added are:

What is missing?

Check if the file has BOM.

The ability to validate the HTML using the tool HTML5 tidy <https://w3c.github.io/tidy-html5/>_ 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:

Limitations

htmllinter used the project template-remover <https://github.com/deezer/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, 3.3, 3.4, 3.5 and 3.6 are supported.

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 <https://github.com/sk-/git-lint>_ before any commit, so errors and style problems are caught early.

TODOS and Possible Features

Contributors

Changelog

v0.4 (2017-03-30)

v0.3 (2016-01-24)

v0.2 (2015-12-13)

v0.1 (2014-05-07)