Releasing Boost Dependency Analyzer 1.1
Hello boost community, a short notice that I just have released the version 1.1 of my dependency analyzing tool for boost. For now I have only managed to get a proper Windows Version, Linux Version will follow later. New Features: Configuration - the tool remembers the path to bcp now - select the source for libraries - maintainers.txt - libraries.xml - 2 filter options - filter libraries by name - filter edges by type, for now its header, source/lib, test and documentation. Export: - Export CSV File which has all libraries and the number of dependencies (sorted) libraries.xml - this is now a optional source for the library names Some feedback: libraries.xml as a lib name source is nice, but not quite perfect. I've seen different results from maintainers.txt and libraries.xml. As maintainers.txt also libraries.xml contains duplicates, some of its library names don't fit the expectation of bcp, so I applied some fixes for this in my program. The Dependency filter is yet not perfect, especially in detection. More details about this version and the download for it at my blog: http://www.meetingcpp.com/index.php/br/items/releasing-boost-dependency-anal... kind regards, Jens Weller
On Fri, 9 Aug 2013, at 12:20 PM, Jens Weller wrote:
libraries.xml as a lib name source is nice, but not quite perfect. I've seen different results from maintainers.txt and libraries.xml. As maintainers.txt also libraries.xml contains duplicates, some of its library names don't fit the expectation of bcp, so I applied some fixes for this in my program.
If you filter by version there aren't any duplicates, they're there because the details of libraries changes from version to version.
on Fri Aug 09 2013, "Jens Weller"
Some feedback:
libraries.xml as a lib name source is nice, but not quite perfect. I've seen different results from maintainers.txt and libraries.xml. As maintainers.txt also libraries.xml contains duplicates, some of its library names don't fit the expectation of bcp, so I applied some fixes for this in my program.
The Dependency filter is yet not perfect, especially in detection.
More details about this version and the download for it at my blog: http://www.meetingcpp.com/index.php/br/items/releasing-boost-dependency-anal...
kind regards,
A bunch of dependency analysis code is checked in to Ryppl. https://github.com/ryppl/ryppl/tree/develop/scripts About a year ago I used it to make these graphs which I think are more informative than the ones I see on your blog. http://f.cl.ly/items/343N460u3b3039091C0g/deps.pdf http://f.cl.ly/items/0v201A0A33152G1u0u0v/deps.pdf http://f.cl.ly/items/3V2I3A103K1Y45113s3w/source-deps.pdf http://f.cl.ly/items/2r2Z1E3X1o1m2k0N321G/boost-all-deps-reduced.svg Of course, I don't remember anymore what the color coding and line styles signify, but that information is probably easily extracted from the source code. -- Dave Abrahams
Gesendet: Samstag, 10. August 2013 um 08:10 Uhr Von: "Dave Abrahams"
An: boost@lists.boost.org Cc: boost-users@lists.boost.org Betreff: Re: [boost] Releasing Boost Dependency Analyzer 1.1 on Fri Aug 09 2013, "Jens Weller"
wrote: Some feedback:
libraries.xml as a lib name source is nice, but not quite perfect. I've seen different results from maintainers.txt and libraries.xml. As maintainers.txt also libraries.xml contains duplicates, some of its library names don't fit the expectation of bcp, so I applied some fixes for this in my program.
The Dependency filter is yet not perfect, especially in detection.
More details about this version and the download for it at my blog: http://www.meetingcpp.com/index.php/br/items/releasing-boost-dependency-anal...
kind regards,
A bunch of dependency analysis code is checked in to Ryppl.
Very nice to know :)
About a year ago I used it to make these graphs which I think are more informative than the ones I see on your blog.
http://f.cl.ly/items/343N460u3b3039091C0g/deps.pdf http://f.cl.ly/items/0v201A0A33152G1u0u0v/deps.pdf http://f.cl.ly/items/3V2I3A103K1Y45113s3w/source-deps.pdf http://f.cl.ly/items/2r2Z1E3X1o1m2k0N321G/boost-all-deps-reduced.svg
Of course, I don't remember anymore what the color coding and line styles signify, but that information is probably easily extracted from the source code.
Well, you *think* their more informative, but don't remember what the colors are... ;) But if ryppl wouldn't know about those dependencies, you'd fail your job. For now my tool uses boost bcp as the view on the dependencies. Not sure if ryppl could be use to extract the dependencies for my tool. I'm thinking about a module doing the exporting to graphviz too, just currently have no time to actually write it. So currently I'm limited to what layoutalgorithms boost graph gives me. Which is only fructerman reingold working. Also personally, I find those graphs with lots of long wiggly edges very hard to read. And don't forget that those graphs are in my tool interactive, you can move nodes, and selecting a node will highlight all its connections. kind regards, Jens Weller
on Sat Aug 10 2013, "Jens Weller"
Gesendet: Samstag, 10. August 2013 um 08:10 Uhr Von: "Dave Abrahams"
An: boost@lists.boost.org Cc: boost-users@lists.boost.org Betreff: Re: [boost] Releasing Boost Dependency Analyzer 1.1 on Fri Aug 09 2013, "Jens Weller"
wrote: Some feedback:
libraries.xml as a lib name source is nice, but not quite perfect. I've seen different results from maintainers.txt and libraries.xml. As maintainers.txt also libraries.xml contains duplicates, some of its library names don't fit the expectation of bcp, so I applied some fixes for this in my program.
The Dependency filter is yet not perfect, especially in detection.
More details about this version and the download for it at my blog: http://www.meetingcpp.com/index.php/br/items/releasing-boost-dependency-anal...
kind regards,
A bunch of dependency analysis code is checked in to Ryppl.
Very nice to know :)
About a year ago I used it to make these graphs which I think are more informative than the ones I see on your blog.
http://f.cl.ly/items/343N460u3b3039091C0g/deps.pdf http://f.cl.ly/items/0v201A0A33152G1u0u0v/deps.pdf http://f.cl.ly/items/3V2I3A103K1Y45113s3w/source-deps.pdf http://f.cl.ly/items/2r2Z1E3X1o1m2k0N321G/boost-all-deps-reduced.svg
Of course, I don't remember anymore what the color coding and line styles signify, but that information is probably easily extracted from the source code.
Well, you *think* their more informative, but don't remember what the colors are... ;)
Well, in the first one, red and green identify two strongly-connected components, where neither library can be built without the other one present. I pruned all leaves of the graph to increase clarity of the dependencies that remained.
But if ryppl wouldn't know about those dependencies, you'd fail your job.
Sorry, I don't know what you mean by that remark.
For now my tool uses boost bcp as the view on the dependencies. Not sure if ryppl could be use to extract the dependencies for my tool.
The ryppl code extracts dependencies recorded in the CMake files of a modularized / CMake-ified Boost.
I'm thinking about a module doing the exporting to graphviz too, just currently have no time to actually write it. So currently I'm limited to what layoutalgorithms boost graph gives me.
Boost Graph and C++ are overpowered for this job. The Python code I wrote processes these graphs just fine, and it was very fast to develop.
Which is only fructerman reingold working.
Also personally, I find those graphs with lots of long wiggly edges very hard to read.
How in the world do you track the straight edges in http://www.meetingcpp.com/tl_files/blog/bda/boost154_libxml.png ? You could always adjust the code so it told graphviz to use straight lines, but personally I was more interested in avoiding collisions and obscured details.
And don't forget that those graphs are in my tool interactive, you can move nodes, and selecting a node will highlight all its connections.
I'm not forgetting because I never knew that. But what is it good for? Anyway, if you're not interested in my code, I'm not insulted, but I I did some very serious analytical work (which is reflected in the shapes and colors of those graphs) when I was doing this stuff, and I thought it would be a shame for anyone to start over from scratch. -- Dave Abrahams
On Friday 09 August 2013 12:20:13 Jens Weller wrote:
Hello boost community,
a short notice that I just have released the version 1.1 of my dependency analyzing tool for boost. For now I have only managed to get a proper Windows Version, Linux Version will follow later.
I think, there's mistake in your description of how to read the graph (or the graph itself): The center is the part of boost that is widely used by other libraries, or how somebody on reddit phrased it "everything in the center is worth looking at". While I think any library in Boost is worth looking at, things like Log, Pool, Wave and Math are pretty close to the core of the graph, and I'd consider them more as leaf libraries (e.g. Log isn't used by any other Boost library to my knowledge). At the same time Ref, StaticAssert and ResultOf are placed on the outskirts while they are clearly more widely used. That being said, some libraries are rightly placed close to the center, so it looks like accounting for dependencies on some libraries is not working.
participants (4)
-
Andrey Semashev
-
Daniel James
-
Dave Abrahams
-
Jens Weller