Excluding Files#

By default, CBI will process any file that it encounters in a compilation database (including #include files). The lines of code in these files will be included in the code divergence calculation unless:

  • The file exists outside of the directory where codebasin is run.

  • The file is explicitly excluded from the analysis.

Using the Analysis File#

Files can be explicitly excluded from an analysis by adding an exclude key to the codebase section of the TOML file. Each entry in the exclude list is a pattern to match files against:

[codebase]
exclude = [
    "pattern",
    "pattern"
]

Note

Each pattern is a “pathspec”, matching the format used by git. For more information, see the git glossary.

For example, we can use this section to instruct CBI to ignore all files in the third-party/ subdirectory, allowing us to focus on our own code:

[codebase]
exclude = [
    "third-party/"
]

Using this new analysis file, the output of codebasin shows fewer lines shared between the cpu and gpu platforms:

 -----------------------
 Platform Set LOC % LOC
 -----------------------
           {}   2  7.41
        {cpu}   7 25.93
        {gpu}   7 25.93
   {cpu, gpu}  11 40.74
 -----------------------
 Code Divergence: 0.56
 Unused Code (%): 7.41
 Total SLOC: 27

Using the Command Line#

It is also possible to exclude files directly from the command line, using the --exclude flag (or -x flag).

The flag expects exclude patterns to be specified the same way as the TOML file. To ignore all files in the third-party/ subdirectory as we did before, we can simply run:

$ codebasin -x "third-party/" analysis.toml

Tip

If a file should always be excluded, it’s better to specify that in the analysis file. The command line approach is best suited to evaluate “what if” scenarios, like “what if I excluded all files with a specific extension?” (e.g., -x "*.cu").