Giter Site home page Giter Site logo

grahamking / lintswitch Goto Github PK

View Code? Open in Web Editor NEW
26.0 5.0 5.0 102 KB

Automatically runs pylint, pep8 and pymetrics on your code, and notifies you of the results.

License: GNU General Public License v3.0

Python 83.44% Vim Script 2.29% HTML 14.27%

lintswitch's Introduction

lintswitch runs pylint, pep8 and pymetrics on your Python code, and jshint on your JS code, in the background.

You must tell lintswitch which files to lint. A vim plugin is included, in the contrib directory, which calls lintswitch every time you save a file.

With lintswitch, your code is constantly being watched and linted in the background, without interrupting your workflow. You view the results in a browser.

Linters and file types currently supported:

  • Python: pylint, pep8, pymetrics
  • Javascript: jshint

lintswitch has only been tested on Ubuntu, but in theory should work anywhere Python does, as long as you install the linters.

Installation

git clone git://github.com/grahamking/lintswitch.git
cd lintswitch
sudo setup.py install

Then copy: plugin/lintswitch.vim to ~/.vim/plugin/.

Dependencies

sudo apt-get install pymetrics
sudo pip install pylint
sudo pip install pep8

Note that 'pymetrics' in pypi (pip) is a different project, and won't work with lintswitch.

For jshint:

  • install nodejs: https://github.com/joyent/node/wiki/Installation
  • install jshint: npm install jshint -g

lintswitch will search your system path and virtualenv bin to find those dependencies.

All depencies are optional - if a linter is absent it will simply be ignored.

Output

Browse to localhost:8008 to view the output. Leave that window open whilst you work - it will auto-update to always display results for the file you just saved (server-sent events!).

If you have Chrome, and click 'Enable Notifications' in the top right of the window, errors will be displaying using desktop notifications.

Daemonize

In case you find lintswitch so awesome that you want to run it all the time, an upstart is included. Copy contrib/lintswitch.conf as /etc/init/lintswitch.conf, and replace my username / group with yours.

That script will start lintswitch on boot. You can also manage it manually: sudo [start|stop|restart|status] lintswitch

Configuration

All the configuration options are command line switches. See lintswitch --help for details.

Not using vim?

To use lintswitch from other editors, you need to connect to a socket and send the filename. In Python, that looks like this:

import socket
s = socket.create_connection(('127.0.0.1', 4008), 2)
s.send('%s\n' % full_path_of_file_you_want_to_lint)
s.close()

If you write a plugin for another editor, please send it my way and I will include it in contrib.

Virtualenv aware

If the file being checked is in a virtualenv, lintswitch will also look for the checkers in the virtualenv's bin directory.

pylint notes

lintswitch will change into the root of your project before running pylint, and use a .pylintrc file if there is one there. The root of your project is determined to be the first directory that does not contain an init.py file, i.e. the first directory that is not a python module.

Contribute

I'd love to add linters for other languages, so if you do that locally, please send it my way. Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.