I don't care much about code review, but it's a close enough attractor to the space of code reading that it seems to be draining attention. So let me hijack this topic and post a request for product (I'd write it myself, but priorities... adult life sucks hard).
--
I dream of a tool that facilitates code reading and exploration. It has some similar features with code review tools, namely:
- integration with version control systems
- basic semantic search/navigation
- looks clean
- not meant to be for writing code
But my dream tool also has following features I haven't seen implemented in any code review tool (or anywhere):
- annotations - not just "comments", but the ability to tag lines, to strike them out, highlight, color, scribble on them, etc. - basically anything you'd do with a printout of a code
- easy way to review history of a single file (with annotations)
- ability to easily bookmark areas / pieces of code and use those bookmarks in comments / annotations
- ability for viewing structural diagrams of the codebase
- full blown semantic search - who calls, calls who, etc.
- project-structure-oriented, not repository-history/commit-oriented
Basically, I'd love a tool not for collaboration, but for individual work - a tool that would facilitate exploring and familiarizing yourself with big codebases, as well as empower one when the time comes to do bigger refactorings.
Would be doubly useful if I could use it on a tablet, so that I could get up from in front of my computer to go and think about the changes I'm about to make (right now, I end up actually printing code if I have to refactor something very messy).
Right now, I would take a button to go to the previous revision of a file, showing the full file with the diff underneath. That way I could very easily 'browse' through the history of a file to find out things like when a particular change got introduced or just get a feel for its history. Why on earth don't github/bitbucket provide this? Surely it's a reasonable and common requirement? Or is there something inherent to git that makes it too awkward?
For what it's worth, features like that (along with, say, line-by-line staging) are the reason why I usually use a GUI client and only drop down to the command line when necessary.