Skip to content

duolingo/splinter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Splinter

Here's a dead simple,
pattern-based linter for code
in any language.

It's not that smart, but
it needs only Bash and runs
on any Unix.

Define your rules in
a text file as a list of
message/regex pairs.

Usage

  1. Copy-paste splinter into your project and make it executable:

    chmod +x splinter
  2. Create a rule file named something like rules.txt:

    # This is a comment and will be ignored.
    # Each rule is defined as an error message followed
    # by the regex (POSIX ERE) that should trigger it.
    
    Remove trailing whitespace
    \s$
    
    Use `assert.strictEqual()` instead of `assert.equal()`
    assert\.equal
    
  3. Run Splinter:

    # The rule file is the only required argument. Optionally, provide
    # a list of files/directories to lint (default: current directory)
    ./splinter rules.txt index.js src
  4. See the output! The exit code will be 1 if violations are found - useful for CI.

    index.js:25:Remove trailing whitespace
    index.js:26:Remove trailing whitespace
    src/foobar.test.js:130:Use `assert.strictEqual()` instead of `assert.equal()`
    

Splinter will ignore violations on any line of code that contains splinter:ignore in a comment.

Running with pre-commit

You can also set up this repo as a pre-commit hook. For example:

- repo: https://github.com/duolingo/splinter.git
  rev: 1.4.0
  hooks:
    - id: splinter
      args:
        - config/splinter-rules-py.txt
      files: \.py$

Duolingo is hiring! Apply at https://www.duolingo.com/careers