Automated code review for Python, Django, etc.
quantifiedcode.com
quantifiedcode.com
Also, given that this is glorified linting, it should be run before code review. Any code review that focuses on issues that can be picked up via a linter isn't actually a review. Code reviews are a higher level analysis.
I agree that running the linter before checking the code into version control would be even better (and in fact we have an API that allows that), but our goal with this tool was to interrupt the development workflow as little as possible. Hence checking code in the version control system seemed a reasonable approach. Also, today many teams use a pull-request based workflow, where code does not get merged into the main branch before it is reviewed (Github pull-review integration is coming soon btw).
And of course the tool can't fully automate code review (since a linter can never know the intent of the programmer), but it can help you to already weed out many problems before a reviewer looks at the code, thus giving you more time to find the really interesting / dangerous bugs in the code.
SOX is there to force managers and every down the line to verify what they do is accurate, where they said things are is accurate and who has access to what is accurate.
It's more of an audit and legally verifying so that if something goes wrong, people can be blamed.
I think calling it "code review" as opposed to "health" or just "lint checker" is marketing bullshit aimed at managers who think all work of engineers could be magically boiled down to automation.
That said, I make heavy use of prospector, along with or wrapping: dodgy, frosted, mccabe, pep257, pep8, pylint, pyroma, restructuredtext_lint, doc8, and sphinx-build "warnings as errors" as part of my builds.
Result: Code that becomes a public source reference used by other projects. Contributions from people who are able to quickly dive in and find where to place the change they wish to propose. Through enforced styling, the entire codebase reads as though it has a single authorship, "same throughout", this can make ~5K LOC as easy to adapt to as another of 1/10th its size.
I took a ~25K LOC open source project, ran it through landscape.io, worked (along with closing many other bugs) from "50% health" towards "97% health", and the readability and maintainability of the project increased drastically. It does work.
Why are these checkers useful? Because I want people who review code, especially in business, to spend their time on the purpose of the code, and not spend a single minute of their time considering whether this suites the "style" of their engineering department. I have seen too many people use code review for pedantic styling.
If I can have the tools reject the code before a person, it lowers the time/cost of a purposeful review. It also hurts less ego's to get only 1 or 2 open issues as opposed to 15-20.
Crude napkin estimates of current and past employers gauge the value of the software at roughly $10-$25 per line of code. It should be treated as such.
landscape.io is a great tool of course (in fact we've been in touch with Carl since a while) but we really wanted to go in a different direction with this and build a tool that goes beyond providing a simple frontend to existing tools. The current beta of QuantifiedCode is of course just the beginning and does lack many features that we're currently working on (e.g. giving the user access to the graph representation of code that we use internally), so stay tuned for more.
BTW we have open-sourced our own "Prospector"-like tool, checkmate (https://github.com/quantifiedcode/checkmate). Right now it's still in beta though and we don't pursue it very actively since we use mainly our graph-based approach to code analysis now (so we don't need to aggregate output from different tools).
One problem I have with such monetary solutions is that in business where I am willing to pay, I could not provide a SaaS tool like codechecker access to the enterprise github hosted on an internal network (or possibly some other repository service).
I'd be happy to pay, but it just isn't technically feasible unless there is a self-hosting solution, which complicates things for you beyond what is profitable: I don't know what the solution is, but this is why I use only cmd-line tools like prospector in business, rather than simply paying for landscape.io or codechecker.
I'll stay tuned, thanks for responding.
Do people actually pay this much for this product? I would love to see some testimonials on the site, because otherwise I cant see myself liking this 150/mo worth
my 2 cents
We also have a free trial that allows you to test-drive the product for two weeks, and right now we don't charge at all for private repositories since we're still in public beta.
Static analysis is less likely to yield fruit (design errors and not false positives) in a language like Python. So the bar's definitely higher for these guys than it is for the static analysis tools for static-typed languages.
ParticipantFormSet = modelformset_factory(Participant, can_delete=False, max_num=8, extra=8,
form=ParticipantForm)
It claims that this is a violation of the naming convention for variables, but in this case ParticipantFormSet is actually a python class, albeit created with a factory function.This is just one example, but I would think long-term that it would be a great annoyance to deal with persistent misapplication of rules.
Right now, you can already disable certain patterns in your project settings if you're bothered by individual messages.
It's pretty easy to implement pre-commit checks that would validate and enforce style and certain lint checks - many companies have these. No automatic check will make sure that the right problem is being solved with the right approach, though.
The time for rejecting a build for linting is at time of merge to trunk/next release, which a good CI should already have checked.
-make changes in a feature branch
-have the linter run on each commit to see if there are problems
-when you make a pull request, check the code again and comment on the PR if there are any problems.
You can also share your own code patterns with other users btw so that they can use them in their projects, and you can use rules created by other users. Crowd-sourced code quality so to say :)
Feedback is highly welcome btw since it's still a pretty early version of our product, so if you have comments, bug reports, suggestions or feature requests feel free to get in touch with us (@quantifiedcode, andreas@quantifiedcode.com)
Using that language we have implemented many checks from PyLint, PyFlakes etc. but for us the most interesting feature is that you can easily translate your own conventions into automated rules and check them on each commit.
So while we offer PyLint patterns as well we give you a way to go way beyond what normal linters can offer.
The way I look at it is that every minute you spend discussing a point in a review that could have been caught/corrected by a static tool is a minute wasted. But these tools can't do any of the actual work of the review.
By the way, linting is a fairly well known term with a long history, but it wouldn't surprise me if there are communities that don't know the term.
So it's pylint updated to be fully compliant with all the latest buzzword standards.
We are pretty open about our methods and technologies, check out e.g. this talk from the PyCon 2015 for more details on our approach: https://www.youtube.com/watch?v=rN0kNQLDYCI
Slides are available here: http://www.slideshare.net/japh44/talk-handout-46938511
However I am curious about your claim " Unlike any other code checker out there, we’ve conceived code error as patterns, not as rules." , could you be more specific?