summaryrefslogtreecommitdiff
path: root/src/analysis
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-09 21:53:07 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-09 21:53:07 +0300
commit2e556b8a16afdd06be9675753f41661289789f2c (patch)
tree916682de16eea3c91e13e91ac4eaf11a34132092 /src/analysis
parent22efb5610234bff03675608a7a1a953864427343 (diff)
downloadparanucker-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.cpp2
-rw-r--r--src/analysis/function.cpp23
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())
{