Analyse C/C++ #include statements.

Process a list of sln, vcxproj, cpp and h files or a CMakeLists.txt file.

Expected usage: DeepEnds ReadCInclude <options> filenames
<options> available:
      --output               Required. Path of DGML file (*.dgml) for Visual
      --filter               Default(default). Optional way of specifying the
                               filter (default or directory)
      --externals            Default(true). Whether to write the links to the
      --binary               Default(). Directory containing CMakeCache.txt

  DeepEnds ReadCInclude --output=C:\Results\ThreeFiles.dgml C:\Source\ThreeFiles.vcxproj
      - read a Visual Studio project file to produce a graph
  DeepEnds ReadCInclude --output=C:\Results\ThreeFiles2.dgml C:\Source\A.h C:\Source\C.cpp
      - read a couple of source files to produce a graph
  DeepEnds ReadCInclude --output=C:\Results\CMake.dgml C:\Source\CMakeLists.txt
      - recursively read a CMake project

This tool only reads the code for a coupling analysis where leaf nodes correspond to file names and the nesting to folders. Those folders are typically specified in the vcxproj.filters file alternatively the values may be taken from the file system which may be forced by setting the filter option.

The individual leaf nodes are joined based on whether they reference each other. i.e. whether one leaf node #include another.

The resulting DGML file can be viewed in Visual Studio where, if externals was set to true, right clicking on a node will produce a pop up menu with the option to Go To Reference that will open the relevant source code. Any unused node should be shaded in pastel yellow. Alternatively it can be processed in other tools.