Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Understanding code

What is the best way to get acquainted with C# codebase of approximate size 200K LOC? Are there any tools available?

http://www.program-comprehension.org/ It seems there is an event going for a long time for this purpose.

Thanks.

like image 580
Raja Avatar asked Jul 19 '10 09:07

Raja


1 Answers

CodeCity has a really nice visualisation of a codebase; it uses the metaphor of a city which makes a lot of sense, as well as highlighting code smells usefully.

ndepend.com is pretty good for an overview.

Atomiq has a nice visualization for duplication. It parses your code-base and visualises it via a wheel, where duplications are represented by spokes in the wheel and you can hover over each to see the side-by-side diff.

Nitriq has a nice LinqToCode kind of thing to enforce quality constraints. You can run these rules from the command line as part of a build-process.

ReSharper's navigation features are invaluable for finding out what uses what. Find-Usages is terribly useful. For exploring a codebase, Alt+F7 is your friend, since it will also keep open a history of queries that you've run, so you can jump back and forwards in it to keep your place.

Visual Studio keeps a record of cursor positions / editor points and has ctrl+- and ctrl+shift+- to move the cursor back and forward between these.

You can insert notes to yourself if you decide on a comment that's conventional (for example // NOTE: blah) and then use ReSharper's TODO Explorer to find all such comments (and other patterns that you might define), then navigate to them. We use that for code-reviews at the moment, for example.

Visual Studio (at least, the Professional Edition) can generate a class diagram; multi-select files, and right-click then create a class diagram. I find these more useful as a scribble as opposed to an artefact to keep up to date and in sync with the codebase, though, frankly. It will tell you inheritance, but not show implements-interface very clearly, and won't even try to show collects, or composed-by.

like image 113
Peter Mounce Avatar answered Sep 28 '22 23:09

Peter Mounce