Scan a folder hierarchy for .cpp, .h and .hpp files.
Build a simplisitc #include dependency graph, and compute a transitive score for each .cpp files.
Display a score at the bottom. The lower the better.
This can be used to speedup compilation by making sure the score goes as low as possible.
$ ./includes_smasher.py ~/src/foss/IXWebSocket/ixwebsocket
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXHttpClient.cpp 71
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXGetFreePort.cpp 39
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXWebSocketPerMessageDeflate.cpp 20
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSelectInterruptFactory.cpp 19
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSetThreadName.cpp 1
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXCancellationRequest.cpp 2
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSocketTLSOptions.cpp 1
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXUserAgent.cpp 1
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXDNSLookup.cpp 30
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSocketMbedTLS.cpp 73
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXBench.cpp 3
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXWebSocketHttpHeaders.cpp 26
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXWebSocketCloseConstants.cpp 2
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSelectInterruptPipe.cpp 8
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXWebSocketProxyServer.cpp 234
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXStrCaseCompare.cpp 1
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSocketOpenSSL.cpp 35
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSocketAppleSSL.cpp 31
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXWebSocketServer.cpp 547
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXWebSocketPerMessageDeflateOptions.cpp 2
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXHttp.cpp 37
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXUuid.cpp 1
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSocketConnect.cpp 57
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSocket.cpp 47
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXWebSocketPerMessageDeflateCodec.cpp 12
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSocketServer.cpp 96
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXNetSystem.cpp 21
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXHttpServer.cpp 455
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXUdpSocket.cpp 47
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXWebSocket.cpp 252
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSocketFactory.cpp 110
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXWebSocketHandshake.cpp 102
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXConnectionState.cpp 5
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXExponentialBackoff.cpp 1
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSelectInterruptEvent.cpp 9
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXWebSocketTransport.cpp 209
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXUrlParser.cpp 1
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXSelectInterrupt.cpp 3
/Users/benjamin.sergeant/src/foss/IXWebSocket/ixwebsocket/IXGzipCodec.cpp 4
total deps 2615