diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-09 21:53:07 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-09 21:53:07 +0300 |
commit | 2e556b8a16afdd06be9675753f41661289789f2c (patch) | |
tree | 916682de16eea3c91e13e91ac4eaf11a34132092 /src/analysis | |
parent | 22efb5610234bff03675608a7a1a953864427343 (diff) | |
download | paranucker-2e556b8a16afdd06be9675753f41661289789f2c.tar.gz paranucker-2e556b8a16afdd06be9675753f41661289789f2c.tar.bz2 paranucker-2e556b8a16afdd06be9675753f41661289789f2c.tar.xz paranucker-2e556b8a16afdd06be9675753f41661289789f2c.zip |
Add new plugin command detectnullpointers.
Diffstat (limited to 'src/analysis')
-rw-r--r-- | src/analysis/expression.cpp | 2 | ||||
-rw-r--r-- | src/analysis/function.cpp | 23 |
2 files changed, 14 insertions, 11 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp index d18a38f..114208c 100644 --- a/src/analysis/expression.cpp +++ b/src/analysis/expression.cpp @@ -38,7 +38,7 @@ namespace Analysis WalkItem analyseModifyExpr(ModifyExprNode *node, WalkItem wi) { // need atleast one arg for check - if (node->args.empty()) + if (node->args.empty() || command == FindArgs) return wi; Node *arg = node->args[0]; diff --git a/src/analysis/function.cpp b/src/analysis/function.cpp index 3b9473a..8908987 100644 --- a/src/analysis/function.cpp +++ b/src/analysis/function.cpp @@ -107,25 +107,28 @@ WalkItem analyseFunction(FunctionDeclNode *node, WalkItem wi) // here need check is variables already present in wi2.checkNullVars if (command == Command::FindArgs) - { Log::log("%s: ", node->label.c_str()); - const int sz = node->args.size(); - for (int f = 0; f < sz; f ++) + + const int sz = node->args.size(); + for (int f = 0; f < sz; f ++) + { + const TypeNode *const type = types[f]; + if (type->nodeType != POINTER_TYPE) + continue; + const ParmDeclNode *const name = node->args[f]; + if (nonNull.find(f + 1) == nonNull.end()) { - const TypeNode *const type = types[f]; - if (type->nodeType != POINTER_TYPE) - continue; - const ParmDeclNode *const name = node->args[f]; - if (nonNull.find(f + 1) == nonNull.end()) + if (command == Command::FindArgs) { Log::log("%s %s, ", type->nodeTypeName.c_str(), name->label.c_str()); - wi2.checkNullVars.insert(name->label); } + wi2.checkNullVars.insert(name->label); } - Log::log("\n"); } + if (command == Command::FindArgs) + Log::log("\n"); if (!wi2.checkNullVars.empty()) { |