CodeFlower Source code visualization
- Did you ever dive into an existing project and wish you could have a bird's eye view of the whole code?
- Did you ever have to refactor a large application and wish you knew where to start?
- Did you ever look for a visualization that would help you communicate visually with your teammates about a repository?
CodeFlowers tries to answer these needs. Also, it tries to make code look beautiful, but that's another story.
To create a CodeFlower, include the
CodeFlower.js file together with
d3.js, just like in this page. Create a new CodeFlower instance using a CSS selector (of the div where the flower should be inserted), and the width and height of the desired visualization. Then, bind JSON data to the flower using
CodeFlower.update(), and you're done.
var myFlower = new CodeFlower("#visualization", 300, 200); myflower.update(jsonData);
Input data format
jsonData format taken as input to
name (the file or directory name), leaf nodes must have a
size (the number of lines of code or the file), and directory nodes must have a
children property containing an array of nodes. As an example, here is the input for the currently displayed CodeFlower. You can modify it at will and click the update button to see the effect of your changes on the CodeFlower.
Generating JSON for a project
It's easy to generate loc metrics for any project, whatever the language. You can use
wc, but this method requires cleaning the output and counts comments and blanks together with actual lines of code. Alternatively, you can use
cloc (http://cloc.sourceforge.net/), which is open-source and makes the difference between real source code and comments. Here are three examples using GitHub as a source.
# Using curl and cloc (fast, accurate) $ curl https://nodeload.github.com/symfony/symfony/tar.gz/master | tar xvz $ cloc symfony-master --csv --by-file --report-file=symfony.cloc # Using git clone and cloc (slow, accurate) $ git clone git://github.com/symfony/symfony.git $ cloc symfony --csv --by-file --report-file=symfony.cloc # Using git clone and wc (slow, inaccurate) $ git clone git://github.com/symfony/symfony.git $ cd symfony $ git ls-files | xargs wc -l > symfony.wc
Once you have a loc metrics file, paste its content below and click on the convert button. This will update the CodeFlower and the JSON textarea, to let you save data for your own CodeFlowers.
Sharing your CodeFlowers
The best way to share your CodeFlowers is to use GitHub Pages, just like this very page. So just fork the
fzaninotto/CodeFlower repository, add your own JSON data under the
data directory, update the options of the dropdown list in the
index.html file accordingly, commit the code, and push to the
gh-pages branch. GitHub will publish the result for you.
All this work is open-source, published by François Zaninotto under the MIT license. That means that nothing prevents you from growing as many CodeFlowers as you want!