Metadata-Version: 2.1
Name: lint_diffs
Version: 0.1.19
Summary: Runs one or more linters, but only outputs errors if diffs have lint issues.
Home-page: https://github.com/atakamallc/lint-diffs
License: UNKNOWN
Author: Atakama, LLC
Author-email: dev-support@atakama.com
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: unidiff

[![Build Status](https://travis-ci.com/AtakamaLLC/lint-diffs.svg?branch=master)](https://travis-ci.com/AtakamaLLC/lint-diffs)
[![Code Coverage](https://codecov.io/gh/AtakamaLLC/lint-diffs/branch/master/graph/badge.svg)](https://codecov.io/gh/AtakamaLLC/lint-diffs)

# lint-diffs

lint-diffs is a simple command line tool for running a set of arbitrarty linters
on a set of 'unified diffs'.

Errors on diff-lines will always be reported.   Errors on non-diff lines can also
be reported, depending on severity.

First you need some diffs, then you pipe it to lint-diffs:

`git diff -U0 origin/master | lint-diffs`

... or in mercurial: `hg outgoing -p | lint-diffs`

-   default linter configuration is on for pylint (.py), rubocop (.rb), and 
    clang (.cpp, .hpp)

-   flake8, eslint and other linters need to be enabled (see below) explicitly.

Configuration:

`lint-diffs` will read a config files from `~/.config/lint-diffs` and/or `./.lint-diffs`.

Example:

```ini
[pylint]
always_report=E.*

[flake8]
extensions=.py

[rubocop]
extensions=.rb
always_report=(E.*|W.*)

[eslint]
extensions=.js

[shellcheck]
extensions=.sh
```

In this example, a flake8 and pylint are run on every diff file ending in `.py`.
Additionally, ruby, eslint and shell script linters have been enabled.   The
ruby linter has been modified to always report warnings, on any changed file,
not just changed lines.

To add new linters:

-   The linter has to report to stdout
-   The linter has to have a regex that produces a full file path, a line number
    and an error class
-   The line numbers and file paths have to match diff target file paths

To enable or disable linters change the 'extensions' config.

Goals:

-   Runs with good defaults for many people
-   Should be easy to modify the config for any linter
-   Should be easy to use with any vcs

