HomePhabricator

[clang-tidy] Store checks profiling info as JSON files

Description

[clang-tidy] Store checks profiling info as JSON files

Summary:
Continuation of D46504.

Example output:

$ clang-tidy -enable-check-profile -store-check-profile=. -checks=-*,readability-function-size source.cpp
$ # Note that there won't be timings table printed to the console.
$ cat *.json
{
"file": "/path/to/source.cpp",
"timestamp": "2018-05-16 16:13:18.717446360",
"profile": {
  "time.clang-tidy.readability-function-size.wall": 1.0421266555786133e+00,
  "time.clang-tidy.readability-function-size.user": 9.2088400000005421e-01,
  "time.clang-tidy.readability-function-size.sys": 1.2418899999999974e-01
}
}

There are two arguments that control profile storage:

  • -store-check-profile=<prefix>

    By default reports are printed in tabulated format to stderr. When this option is passed, these per-TU profiles are instead stored as JSON. If the prefix is not an absolute path, it is considered to be relative to the directory from where you have run :program:clang-tidy. All . and .. patterns in the path are collapsed, and symlinks are resolved.

    Example: Let's suppose you have a source file named example.cpp, located in /source directory.
    • If you specify -store-check-profile=/tmp, then the profile will be saved to /tmp/<timestamp>-example.cpp.json
    • If you run :program:clang-tidy from within /foo directory, and specify -store-check-profile=., then the profile will still be saved to /foo/<timestamp>-example.cpp.json

Reviewers: alexfh, sbenza, george.karpenkov, NoQ, aaron.ballman

Reviewed By: alexfh, george.karpenkov, aaron.ballman

Subscribers: Quuxplusone, JonasToth, aaron.ballman, llvm-commits, rja, Eugene.Zelenko, xazax.hun, mgrang, cfe-commits

Tags: #clang-tools-extra

Differential Revision: https://reviews.llvm.org/D46602

Details

Committed
lebedevriJun 6 2018, 8:07 AM
Reviewer
alexfh
Differential Revision
D46602: [clang-tidy] Store checks profiling info as JSON files
Parents
rL334100: Relax shtest-run-at-line.py
Branches
Unknown
Tags
Unknown