top | item 8996037

Linthub: Static code analysis for GitHub pull requests

70 points| nl5874 | 11 years ago |linthub.io

34 comments

order

remi|11 years ago

Instead of using a service like this one (or Hound) that comments directly on pull requests, we chose to integrate the same tools in our build process with Phare (https://github.com/mirego/phare), a command-line tool we built which runs Rubocop, JSHint, JSCS, etc. and exits with a global status.

If the code has coding style violations, the build breaks. Exactly like it would if we pushed a failing test.

Personally, I’m not a fan of the noise generated by comments about coding style on pull requests.

nhaehnle|11 years ago

There's an obvious trade-off here, though. For example, why stop at basic lint-style checks? You could make a static analyzer part of the build process and fail the build when a defect is detected. The trade-off is the same as with growing a test suite that always runs: Over time, your build times increase, and that makes development tedious.

There's a balance to be found between core checks that run at build time, and additional, more extensive checks, which run automatically and asynchronously (!) once a developer believes their changes to be good enough. Both things have their place in a proper software development flow.

cjbest|11 years ago

+1 for "lint errors fail the build"

If you also add "and any coding style things you care about, you have to make the linter check for", then you don't have to waste any time on that stuff in the pull request.

randx|11 years ago

Same for me. I used Hound for a while but it was annoying to see all this comments. So I just added Rubocop check inside `rake test` so build is broken if you have code style issues

hk__2|11 years ago

I guess the advantage of Linthub over Phare is that it can run on pull requests made by external contributors.

zidar|11 years ago

This looks pretty awesome and will just get better as more languages get supported. But, it comments on commits, not on the diff in the PR. I think commeting on the diff looks nicer (you see code snippet with the comment) and in my opinion it's also easyer to find all the comments that way. Instead of clicking the commit hash on the commen each time.

nl5874|11 years ago

Thanks! Will check and handle this.

nl5887|11 years ago

Added Python and Ruby support btw. Supporting 9 languages now.

jbrooksuk|11 years ago

So this is like Hound[1]? - I am (kinda) building something for PHP, Anorak[2] which uses something else I built.

What's your plan on this? I'd like to use it for our private repositories.

Edit: My web hooks are returning errors. I'll submit some feedback.

[1] https://houndci.com

[2] https://github.com/jbrooksuk/anorak

nl5874|11 years ago

It seems comparable, though we are supporting different languages. Plans are to support a lot more languages, and support private repos also. (Actually they are already supported, but linthubot needs to have read only access to the repository). All feedback is welcome.

dominotw|11 years ago

Are there any opensource tools that do the same thing( like reek for ruby) ?

I would like to use something like this at work but we don't host code on github.

lsaferite|11 years ago

Does github not have granular enough permissions to allo commenting on pull requests without granting write access to a repo?

nl5887|11 years ago

Yeah, true. We've tightened the scope, read/write is not necessary any longer. Only for private repo's, the linthubot user needs to be added to the repo with read access.

jchomali|11 years ago

This look awesome! But there are a lot of similar services such as codeclimate.