[PATCH] D59555: [analyzer] Add yaml parser to GenericTaintChecker
Kristóf Umann via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 17 02:21:05 PDT 2019
Szelethus added a comment.
Hmm, okay, so we convert `-1` from the config file to `UINT_MAX` in the code, I like it!
I wrote a couple nits but they really are just that. In general, for each different error message, a different test case would be great.
================
Comment at: include/clang/StaticAnalyzer/Checkers/Checkers.td:805
+ "Config",
+ "Specifies the name of the configuration file.",
+ "",
----------------
Okay, so how do I know what the format of that file is? How about we create another option (in a different revision) that dumps an example configuration with comments?
================
Comment at: lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp:27
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h"
-#include <climits>
-#include <initializer_list>
+#include "llvm/ADT/APInt.h"
+#include "llvm/ADT/StringMap.h"
----------------
Do we need this include?
================
Comment at: lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp:89-92
+ static const unsigned InvalidArgIndex{std::numeric_limits<unsigned>::max()};
/// Denotes the return vale.
- static const unsigned ReturnValueIndex = UINT_MAX - 1;
+ static const unsigned ReturnValueIndex{std::numeric_limits<unsigned>::max() -
+ 1};
----------------
Leave this as is for now, but maaybe in the future we should just use an enum. What do you think?
================
Comment at: lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp:304-306
+ Mgr.reportInvalidCheckerOptionValue(
+ this, Option,
+ "an argument number for propagation rules greater or equal to -1");
----------------
Could we have a test for this too? :)
================
Comment at: lib/StaticAnalyzer/Checkers/Yaml.h:1
+//== Yaml.h ----------------------------------- -*- C++ -*--=//
+//
----------------
Have with with the same length as the rest :)
================
Comment at: lib/StaticAnalyzer/Checkers/Yaml.h:9
+//
+// This file contains a simple interface allow to open and parse yaml files.
+//
----------------
Is this actually the reason why we have this file? We already have a YAML parser in LLVM, what's does this file do that the "default" parser doesn't?
================
Comment at: lib/StaticAnalyzer/Checkers/Yaml.h:14
+#include "clang/StaticAnalyzer/Core/CheckerManager.h"
+#include "llvm/ADT/APInt.h"
+#include "llvm/Support/YAMLTraits.h"
----------------
Hmmm, do we need this include?
================
Comment at: lib/StaticAnalyzer/Checkers/Yaml.h:16
+#include "llvm/Support/YAMLTraits.h"
+
+/// Read the given file from the filesystem and parse it as a yaml file. The
----------------
```lang=c++
namespace clang {
namespace ento {
```
================
Comment at: lib/StaticAnalyzer/Checkers/Yaml.h:42-43
+ if (std::error_code ec = Input.error()) {
+ Mgr.reportInvalidCheckerOptionValue(Chk, Option,
+ "a valid yaml file: " + ec.message());
+ return {};
----------------
And for this too?
================
Comment at: lib/StaticAnalyzer/Checkers/Yaml.h:48
+ return Config;
+}
----------------
```lang=c++
} // end of namespace clang
} // end of namespace ento
```
================
Comment at: test/Analysis/taint-generic.c:24
+// CHECK-INVALID-FILE-SAME: 'alpha.security.taint.TaintPropagation:Config',
+// CHECK-INVALID-FILE-SAME: that expects a valid filename
----------------
Could you please add the rest of the error message?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D59555/new/
https://reviews.llvm.org/D59555
More information about the cfe-commits
mailing list