<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/141639>141639</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-tidy: --enable-check-profile is empty
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
fzakaria
</td>
</tr>
</table>
<pre>
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.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWkFz27oR_jXQZYccEKRI8aADbUmvaZPm1XbOHJCERMQgwAKgY-fQ395ZUrIV1a8vTtrkuRVGI1Eisdj9sLsfV0vunNxpIZZkfkHmqxkffGvscvuZ33Ir-awyzcPyDdhBg28FbI1S5pPUOzAazGChNo2ouBMkLggtSEr3L1rUiutd4GXzAEFQt6K-dSReEcaCatj11mgROPlZmG0g7nsrnJNGE8YgJGzjbE3YRskKTwVeOO8I22h5X_JelndcDSKsawh6qAapGsI2tel6qURZm67junHhR2c0BIHQvFJiWj_ordlKJeBEU0KLNx6cEJ0Db0B00oMznYBP3Gqpdw6qwQNhBWGFNuBlhwBIvTW2435UG09Nkl4JBEHgvLEnv5J4dTiiRXQwH3ZCC8u9aEJCi_DrlSNxwaIFiYs5iYuDNDz81XihveQKlOC3YLbQic7YB-iN1F40uAvVAxCWmcGXmneCsAzI_GIClGuuHj4LGwxa3ofvuFKmJvMVoQUAixZAsksorq_XVzfl-m-ELdhA2CWgdjvhS-69dSXiTtii9vd4btSYsBxf8cUoCAcKIvM17upoHVqOqBG2aXd5nLWU1hn7nHRtU9OPac16ydVds6srF-wQlSAKozSkQSPuCNtIXauhwdnjycNn2JK4iPIoIXERR4iPNh4DCsR9z3UjGtha00HHa2sQlCPbMtQV5066srgRW6nFF-bfcRXtjWSE5fDLzfr6pvw3V_wU-xc5ekr8Feb_i_4TCIv8i53_9Wq9Kjfvr94VN4wwlE3iApebfJDEBbqa1VxN39Z__5NQvbDTt0vT9RwNHUE5BefH4FL2VjSl7Ho1IZSgEUny9Q7yJQQjShAlE0oTiMdXlIQtxhWntDaaPBnO8H2asCluirflpnjz9sPVunzeV16YISjueZIem_VuygbSwRjbmHpwHUbjcRkctdHOQ91yu0_McEgVQOIVYGifXoG-303Jgi2mvIuXPV5wFP17Y_7x3PieHHgw8NJob42Cj0PXj5xDWFZzJ4Ci-7EMgHtQGMg4-Tiv4TjntnNu-1_MbV8D0M9NbT8Skjh5kc-c2LuHJE6OINljdwrGgrB4ggMP2Jfo5HhgdLnlUg1W_HRYsm-KpAMekB27SPHu4s0vH95_uC7Xb6_X5cXb95d_WV-V8HuDzC9_HAiPkbz_KeiNndJKFtOXYfG8uQdsspjuGcZ9kr5ukUMp5tQX4vDd5Fg4N4wVFhactdGNxBoL7wa2XDlxpsP_Ih0-e8dzuO05E-UzRPnbiL1knOn2Ba74x8PztXD1q0Azy7EgpN_O8fmeGuT2qQ58JvQL54RFarkSblAeJl2wGpwKyOP_5JAunuO7J4C-m_Zu-C2S3shxUFmu6_ZMdefK71z5_XwqOrPJH6Hyy7-v8vuBrPCfoINv6pGcCeNMGP8XhPEK2iCnHWbwVmLYtgJISnsrtvKepBRMP_69QVL6ez3ZlI6NaJTw5-v3f536I86A6Hr_EJ72nrmHw0S2YZTN6ZxlEWUJS2kSpyzLYhqc5qKpZ4yisotxX9kkgCHMhLGXpDWGgE1CvOyE87zrnyShRgGdByyDCO_1Ge4oS8NH3Y7nPxoyzZ50QyVXT--ncNdcE5Z58EIpTPrSE5Y54FANOzAWODRDV8HghAVhrbHgW-7BtWZQzQRsJfZd_qn1TWhx03J9Cw9mCGfNMm7yOOczsYyyZBGnGc2yWbtM0gWrFimNqEi28yhPRMPidBExLuYZ58lMLh93I4ujKAvTJM_riuVzvqAsXyQkoaLjUoVK3XWhsbuZdG4QyyiJ0jifKV4J5cYHNhh7esQAwZmvZnaJs4Jq2DmSUCWdd09yvPRKLI_mxMVvPSAg3eRXs8GqZet978bW1AbDUvp2qMLadOgG6u7wgXM_inr81xIVRq_Y63y3ZP8MAAD___a5d_I">