Skip to content

clang-tidy: --enable-check-profile is empty #141639

Open
@fzakaria

Description

@fzakaria

I run the following on our codebase:

clang-tidy --checks="-bugprone-sizeof-expression" ./src/libexpr-tests/nix_api_value.cc -p build/compile_commands.json --enable-check-profile 

It seems to emit some warnings but no timing information

clang-tidy --checks="-bugprone-sizeof-expression" ./src/libexpr-tests/nix_api_value.cc -p build/compile_commands.json --enable-check-profile --store-check-profile=profile
1 warning generated.
../src/libexpr-tests/nix_api_value.cc:218:5: warning: Potential leak of memory pointed to by 'out_name' [clang-analyzer-unix.Malloc]
  218 |     ASSERT_EQ(2u, nix_get_attrs_size(ctx, value));
      |     ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest.h:1914:31: note: expanded from macro 'ASSERT_EQ'
 1914 | #define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
      |                               ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest.h:1898:3: note: expanded from macro 'GTEST_ASSERT_EQ'
 1898 |   ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
      |   ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest_pred_impl.h:148:44: note: expanded from macro 'ASSERT_PRED_FORMAT2'
  148 |   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
      |                                            ^
../src/libexpr-tests/nix_api_value.cc:203:46: note: Memory is allocated
  203 |     const char ** out_name = (const char **) malloc(sizeof(char *));
      |                                              ^~~~~~~~~~~~~~~~~~~~~~
../src/libexpr-tests/nix_api_value.cc:218:5: note: Control jumps to 'case 0:'  at line 218
  218 |     ASSERT_EQ(2u, nix_get_attrs_size(ctx, value));
      |     ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest.h:1914:31: note: expanded from macro 'ASSERT_EQ'
 1914 | #define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
      |                               ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest.h:1898:3: note: expanded from macro 'GTEST_ASSERT_EQ'
 1898 |   ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
      |   ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest_pred_impl.h:148:3: note: expanded from macro 'ASSERT_PRED_FORMAT2'
  148 |   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
      |   ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest_pred_impl.h:134:3: note: expanded from macro 'GTEST_PRED_FORMAT2_'
  134 |   GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), on_failure)
      |   ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest_pred_impl.h:78:3: note: expanded from macro 'GTEST_ASSERT_'
   78 |   GTEST_AMBIGUOUS_ELSE_BLOCKER_                                 \
      |   ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/internal/gtest-port.h:730:3: note: expanded from macro 'GTEST_AMBIGUOUS_ELSE_BLOCKER_'
  730 |   switch (0)                          \
      |   ^
../src/libexpr-tests/nix_api_value.cc:218:5: note: Assuming the condition is false
  218 |     ASSERT_EQ(2u, nix_get_attrs_size(ctx, value));
      |     ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest.h:1914:31: note: expanded from macro 'ASSERT_EQ'
 1914 | #define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest.h:1898:3: note: expanded from macro 'GTEST_ASSERT_EQ'
 1898 |   ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest_pred_impl.h:148:3: note: expanded from macro 'ASSERT_PRED_FORMAT2'
  148 |   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest_pred_impl.h:134:3: note: expanded from macro 'GTEST_PRED_FORMAT2_'
  134 |   GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), on_failure)
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest_pred_impl.h:79:40: note: expanded from macro 'GTEST_ASSERT_'
   79 |   if (const ::testing::AssertionResult gtest_ar = (expression)) \
      |                                        ^~~~~~~~
../src/libexpr-tests/nix_api_value.cc:218:5: note: Taking false branch
  218 |     ASSERT_EQ(2u, nix_get_attrs_size(ctx, value));
      |     ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest.h:1914:31: note: expanded from macro 'ASSERT_EQ'
 1914 | #define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
      |                               ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest.h:1898:3: note: expanded from macro 'GTEST_ASSERT_EQ'
 1898 |   ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
      |   ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest_pred_impl.h:148:3: note: expanded from macro 'ASSERT_PRED_FORMAT2'
  148 |   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
      |   ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest_pred_impl.h:134:3: note: expanded from macro 'GTEST_PRED_FORMAT2_'
  134 |   GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), on_failure)
      |   ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest_pred_impl.h:79:3: note: expanded from macro 'GTEST_ASSERT_'
   79 |   if (const ::testing::AssertionResult gtest_ar = (expression)) \
      |   ^
../src/libexpr-tests/nix_api_value.cc:218:5: note: Potential leak of memory pointed to by 'out_name'
  218 |     ASSERT_EQ(2u, nix_get_attrs_size(ctx, value));
      |     ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest.h:1914:31: note: expanded from macro 'ASSERT_EQ'
 1914 | #define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
      |                               ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest.h:1898:3: note: expanded from macro 'GTEST_ASSERT_EQ'
 1898 |   ASSERT_PRED_FORMAT2(::testing::internal::EqHelper::Compare, val1, val2)
      |   ^
/nix/store/hg937h00c72z4mhdc0j6c2pialvdgcbs-gtest-1.16.0-dev/include/gtest/gtest_pred_impl.h:148:44: note: expanded from macro 'ASSERT_PRED_FORMAT2'
  148 |   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
      |                                            ^

I tried the prefix option --store-check-profile=profile but the JSON is also empty.

cat profile/20250527102426043627730-nix_api_value.cc.json 
{
"file": "../src/libexpr-tests/nix_api_value.cc",
"timestamp": "2025-05-27 10:24:26.043627730",
"profile": {

}
}

I can't tell if it's a bug or a dumb user error that should also be informed.

Thank you.

Metadata

Metadata

Assignees

No one assigned

    Labels

    clang-tidyquestionA question, not bug report. Check out https://llvm.org/docs/GettingInvolved.html instead!

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions