Skip to content

extracted ValueFlow::Value to vfvalue.{cpp|h} #4642

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jan 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
202 changes: 103 additions & 99 deletions Makefile

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions lib/astutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
#include "utils.h"
#include "valueflow.h"
#include "valueptr.h"
#include "vfvalue.h"

#include "checkclass.h"

#include <algorithm>
Expand Down
2 changes: 1 addition & 1 deletion lib/check.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#include "settings.h"
#include "token.h"
#include "tokenize.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <cctype>
#include <iostream>
Expand Down
1 change: 1 addition & 0 deletions lib/checkautovariables.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "token.h"
#include "tokenize.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <list>
#include <unordered_set>
Expand Down
2 changes: 1 addition & 1 deletion lib/checkbool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
#include "symboldatabase.h"
#include "token.h"
#include "tokenize.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <list>
#include <vector>
Expand Down
2 changes: 1 addition & 1 deletion lib/checkbufferoverrun.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
#include "errortypes.h"
#include "mathlib.h"
#include "symboldatabase.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <list>
#include <map>
Expand Down
2 changes: 1 addition & 1 deletion lib/checkcondition.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
#include "symboldatabase.h"
#include "token.h"
#include "tokenize.h"
#include "valueflow.h"
#include "vfvalue.h"

#include "checkother.h" // comparisonNonZeroExpressionLessThanZero and testIfNonZeroExpressionIsPositive

Expand Down
1 change: 1 addition & 0 deletions lib/checkfunctions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "token.h"
#include "tokenize.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <iomanip>
#include <sstream>
Expand Down
2 changes: 1 addition & 1 deletion lib/checkio.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#include "symboldatabase.h"
#include "token.h"
#include "tokenize.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <algorithm>
#include <cctype>
Expand Down
1 change: 1 addition & 0 deletions lib/checknullpointer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "symboldatabase.h"
#include "token.h"
#include "tokenize.h"
#include "valueflow.h"

#include <algorithm>
#include <cctype>
Expand Down
2 changes: 1 addition & 1 deletion lib/checknullpointer.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#include "check.h"
#include "config.h"
#include "ctu.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <list>
#include <string>
Expand Down
1 change: 1 addition & 0 deletions lib/checkother.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#include "tokenize.h"
#include "utils.h"
#include "valueflow.h"
#include "vfvalue.h"

#include "checkuninitvar.h" // CheckUninitVar::isVariableUsage
#include "checkclass.h" // CheckClass::stl_containers_not_const
Expand Down
2 changes: 1 addition & 1 deletion lib/checkstl.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
#include "config.h"
#include "errortypes.h"
#include "tokenize.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <string>

Expand Down
1 change: 1 addition & 0 deletions lib/checktype.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "symboldatabase.h"
#include "token.h"
#include "tokenize.h"
#include "valueflow.h"

#include <cmath>
#include <list>
Expand Down
2 changes: 1 addition & 1 deletion lib/checktype.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

#include "check.h"
#include "config.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <list>
#include <string>
Expand Down
1 change: 0 additions & 1 deletion lib/checkuninitvar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
#include "symboldatabase.h"
#include "token.h"
#include "tokenize.h"
#include "valueflow.h"

#include "checknullpointer.h" // CheckNullPointer::isPointerDeref

Expand Down
2 changes: 1 addition & 1 deletion lib/checkuninitvar.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
#include "ctu.h"
#include "mathlib.h"
#include "errortypes.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <list>
#include <map>
Expand Down
2 changes: 1 addition & 1 deletion lib/clangimport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
#include "tokenize.h"
#include "tokenlist.h"
#include "utils.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <algorithm>
#include <cctype>
Expand Down
2 changes: 2 additions & 0 deletions lib/cppcheck.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@
<ClCompile Include="tokenlist.cpp" />
<ClCompile Include="utils.cpp" />
<ClCompile Include="valueflow.cpp" />
<ClCompile Include="vfvalue.cpp" />
</ItemGroup>
<ItemGroup Label="HeaderFiles">
<ClInclude Include="..\externals\simplecpp\simplecpp.h" />
Expand Down Expand Up @@ -174,6 +175,7 @@
<ClInclude Include="valueflow.h" />
<ClInclude Include="valueptr.h" />
<ClInclude Include="version.h" />
<ClInclude Include="vfvalue.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="version.rc" />
Expand Down
6 changes: 6 additions & 0 deletions lib/cppcheck.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,9 @@
<ClCompile Include="infer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="vfvalue.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup Label="HeaderFiles">
<ClInclude Include="checkbufferoverrun.h">
Expand Down Expand Up @@ -400,6 +403,9 @@
<ClInclude Include="valueptr.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="vfvalue.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="version.rc" />
Expand Down
2 changes: 1 addition & 1 deletion lib/ctu.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
#include "check.h"
#include "errorlogger.h"
#include "mathlib.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <list>
#include <map>
Expand Down
2 changes: 1 addition & 1 deletion lib/fwdanalysis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
#include "library.h"
#include "symboldatabase.h"
#include "token.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <string>

Expand Down
2 changes: 1 addition & 1 deletion lib/infer.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

#include "config.h"
#include "mathlib.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <list>
#include <string>
Expand Down
6 changes: 4 additions & 2 deletions lib/lib.pri
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ HEADERS += $${PWD}/analyzer.h \
$${PWD}/utils.h \
$${PWD}/valueflow.h \
$${PWD}/valueptr.h \
$${PWD}/version.h
$${PWD}/version.h \
$${PWD}/vfvalue.h

SOURCES += $${PWD}/analyzerinfo.cpp \
$${PWD}/astutils.cpp \
Expand Down Expand Up @@ -128,4 +129,5 @@ SOURCES += $${PWD}/analyzerinfo.cpp \
$${PWD}/tokenize.cpp \
$${PWD}/tokenlist.cpp \
$${PWD}/utils.cpp \
$${PWD}/valueflow.cpp
$${PWD}/valueflow.cpp \
$${PWD}/vfvalue.cpp
1 change: 1 addition & 0 deletions lib/library.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include "tokenlist.h"
#include "utils.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <cctype>
#include <climits>
Expand Down
2 changes: 1 addition & 1 deletion lib/pathanalysis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#include "astutils.h"
#include "symboldatabase.h"
#include "token.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <algorithm>
#include <memory>
Expand Down
2 changes: 1 addition & 1 deletion lib/programmemory.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

#include "config.h"
#include "mathlib.h"
#include "valueflow.h" // needed for alias
#include "vfvalue.h" // needed for alias

#include <cstddef>
#include <functional>
Expand Down
2 changes: 1 addition & 1 deletion lib/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
#include "settings.h"
#include "path.h"
#include "summaries.h"
#include "valueflow.h"
#include "vfvalue.h"

#include <fstream>

Expand Down
17 changes: 13 additions & 4 deletions lib/token.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@
#include <unordered_set>
#include <utility>

namespace {
struct less {
template<class T, class U>
bool operator()(const T &x, const U &y) const {
return x < y;
}
};
}

const std::list<ValueFlow::Value> TokenImpl::mEmptyValueList;

Token::Token(TokensFrontBack *tokensFrontBack) :
Expand Down Expand Up @@ -1921,7 +1930,7 @@ static bool removeContradiction(std::list<ValueFlow::Value>& values)
continue;
if (!x.equalValue(y)) {
auto compare = [](const ValueFlow::Value& x, const ValueFlow::Value& y) {
return x.compareValue(y, ValueFlow::less{});
return x.compareValue(y, less{});
};
const ValueFlow::Value& maxValue = std::max(x, y, compare);
const ValueFlow::Value& minValue = std::min(x, y, compare);
Expand Down Expand Up @@ -2012,9 +2021,9 @@ static void mergeAdjacent(std::list<ValueFlow::Value>& values)
if (y->bound != ValueFlow::Value::Bound::Point)
continue;
}
if (x->bound == ValueFlow::Value::Bound::Lower && !y->compareValue(*x, ValueFlow::less{}))
if (x->bound == ValueFlow::Value::Bound::Lower && !y->compareValue(*x, less{}))
continue;
if (x->bound == ValueFlow::Value::Bound::Upper && !x->compareValue(*y, ValueFlow::less{}))
if (x->bound == ValueFlow::Value::Bound::Upper && !x->compareValue(*y, less{}))
continue;
adjValues.push_back(y);
}
Expand All @@ -2025,7 +2034,7 @@ static void mergeAdjacent(std::list<ValueFlow::Value>& values)
std::sort(adjValues.begin(), adjValues.end(), [&values](ValueIterator xx, ValueIterator yy) {
(void)values;
assert(xx != values.end() && yy != values.end());
return xx->compareValue(*yy, ValueFlow::less{});
return xx->compareValue(*yy, less{});
});
if (x->bound == ValueFlow::Value::Bound::Lower)
x = removeAdjacentValues(values, x, adjValues.rbegin(), adjValues.rend());
Expand Down
2 changes: 1 addition & 1 deletion lib/token.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@

#include "config.h"
#include "mathlib.h"
#include "valueflow.h"
#include "templatesimplifier.h"
#include "utils.h"
#include "vfvalue.h"

#include <cstdint>
#include <cstddef>
Expand Down
Loading