[PATCH] D132017: [clang][analyzer] Add errno modeling to StreamChecker

Balázs Benics via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 17 02:58:20 PDT 2022


steakhal added inline comments.


================
Comment at: clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp:283-284
 
+  mutable bool EofInitialized = false;
+  mutable int EofVal = -1;
+
----------------
Have you considered using `llvm::Optional<int>` for this?


================
Comment at: clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp:537
+                  errno_modeling::getNoteTagForStdSuccess(
+                      C, cast<NamedDecl>(Call.getDecl())->getNameAsString()));
   C.addTransition(StateNull);
----------------
I believe, `getDecl()` might return null, e.g. for calling a function pointer.


================
Comment at: clang/test/Analysis/stream-errno.c:12-13
+  // expected-note at -1{{Assuming that function 'fopen' is successful, in this case the value 'errno' may be undefined after the call and should not be used}}
+  // expected-note at +4{{'F' is null}}
+  // expected-note at +3{{Taking true branch}}
+  // expected-note at +2{{'F' is non-null}}
----------------
So these two lines correspond to the following `clang_analyzer_eval()`.
It took me a while to make sense of the two independent note streams at once.
Please consider splitting this and similar cases to have a single stream of notes.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D132017



More information about the cfe-commits mailing list