[PATCH] D101060: [Analyzer][StdLibraryFunctionsChecker] Describe arg constraints

Gabor Marton via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 23 01:37:05 PDT 2021


martong marked 3 inline comments as done.
martong added a comment.

Thanks for the review Valeriy!



================
Comment at: clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp:338-339
         }
+        llvm_unreachable("The constraint must be either a concrete value or "
+                         "encoded in an argument.");
       }();
----------------
vsavchenko wrote:
> Just a thought here, maybe we should assert `SizeArgN` instead then?
Absolutely, good point.


================
Comment at: clang/test/Analysis/std-c-library-functions-arg-constraints-notes.cpp:32
+    __buf_size_arg_constraint_concrete(buf); // \
+    // expected-note{{The size of the 0th arg should be equal to or less than the value of 10}} \
+    // expected-warning{{}}
----------------
vsavchenko wrote:
> Oof, I do understand that we are devs and enumerate things starting from 0. But this is supposed to be human-readable and humans start counting from 1.
I've been thinking a lot about this and I see your point. On the other hand, we report warnings to other developers/programmers who are all used to start the indexing from 0, they may find it odd to start from 1. 

Alas, the string `0th` makes it obvious that we are talking about the first argument, however the string `1st` is ambiguous, even if we start the indexing from 0 or from 1. In this sense, starting from 0 makes less confusion.


================
Comment at: clang/test/Analysis/std-c-library-functions-arg-constraints.c:33
   // report-warning{{Function argument constraint is not satisfied}} \
+  // report-note{{}} \
   // bugpath-warning{{Function argument constraint is not satisfied}} \
----------------
vsavchenko wrote:
> What's up with these?
The new explanation of the constraints is added as an extra 'note' tag, which is displayed alongside the warning.
In these tests I don't want to test for the note, that would make these tests overly specified. For testing the notes we have a separate, newly added test file `std-c-library-functions-arg-constraints-notes.cpp`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D101060/new/

https://reviews.llvm.org/D101060



More information about the cfe-commits mailing list