# lowRISC's Miscellaneous Linters

## About the project

These are linters and checkers, usually for source code, which we have written
for various lowRISC projects.

They include
* `licence-checker/licence-checker.py` which will ensure source code in your
  repository contains correctly formatted licence headers. This is designed to
  be reused: it is configured with `licence-checker.hjson`.

## How to contribute

Have a look at [CONTRIBUTING](./CONTRIBUTING.md) for guidelines on how to
contribute code to this repository.

## Licensing

Unless otherwise noted, everything in this repository is covered by the Apache
License, Version 2.0 (see [LICENSE](./LICENSE) for full text).
