Skip to content

Commit 5120105

Browse files
Detect duplicate defines in cfg (#5936)
1 parent eed9c4d commit 5120105

File tree

8 files changed

+16
-1171
lines changed

8 files changed

+16
-1171
lines changed

cfg/boost.cfg

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
<define name="BOOST_UNLIKELY(X)" value="(X)"/>
2929
<define name="BOOST_FIXTURE_TEST_SUITE(name, fixture, ...)" value="struct name : fixture {" />
3030
<define name="BOOST_FIXTURE_TEST_SUITE_END()" value="};"/>
31-
<define name="BOOST_TEST_GLOBAL_FIXTURE(name)" value=""/>
3231
<define name="BOOST_PYTHON_FUNCTION_OVERLOADS(foo_overloads, foo, x, y)" value=""/>
3332
<define name="BOOST_AUTO_TEST_SUITE(name, ...)" value="namespace name {" />
3433
<define name="BOOST_AUTO_TEST_SUITE_END()" value="}" />
@@ -93,7 +92,6 @@
9392
<define name="BOOST_SCOPED_ENUM_DECLARE_BEGIN(x)" value=""/>
9493
<define name="BOOST_SCOPED_ENUM_DECLARE_END(x)" value=""/>
9594
<define name="BOOST_TTI_HAS_TYPE(x)" value=""/>
96-
<define name="BOOST_TTI_HAS_TYPE(x)" value=""/>
9795
<define name="BOOST_TTI_MEMBER_TYPE(x)" value=""/>
9896
<define name="BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION(x)" value=""/>
9997
<!-- ########## Boost containers ########## -->

cfg/qt.cfg

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5134,9 +5134,6 @@
51345134
<define name="QTC_ASSERT(cond," value="action) if (Q_LIKELY(cond)) {} else { QTC_ASSERT_STRING(#cond); action; } do {} while (0)"/>
51355135
<define name="QTC_CHECK(cond)" value="if (Q_LIKELY(cond)) {} else { QTC_ASSERT_STRING(#cond); } do {} while (0)"/>
51365136
<define name="QTC_GUARD(cond)" value="((Q_LIKELY(cond)) ? true : (QTC_ASSERT_STRING(#cond), false))"/>
5137-
<define name="QTC_ASSERT(cond, action)" value="if (Q_LIKELY(cond)) {} else { QTC_ASSERT_STRING(#cond); action; } do {} while (0)"/>
5138-
<define name="QTC_CHECK(cond)" value="if (Q_LIKELY(cond)) {} else { QTC_ASSERT_STRING(#cond); } do {} while (0)"/>
5139-
<define name="QTC_GUARD(cond)" value="((Q_LIKELY(cond)) ? true : (QTC_ASSERT_STRING(#cond), false))"/>
51405137
<define name="Q_LOGGING_CATEGORY(name,...)" value=""/>
51415138
<define name="QT_FORWARD_DECLARE_CLASS(name)" value="class name;"/>
51425139
<define name="QT_FORWARD_DECLARE_STRUCT(name)" value="struct name;"/>

cfg/windows.cfg

Lines changed: 1 addition & 1072 deletions
Large diffs are not rendered by default.

cfg/wxwidgets.cfg

Lines changed: 0 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,7 +1018,6 @@
10181018
<define name="wxCHK_2STATE" value="0x4000"/>
10191019
<define name="wxCHK_3STATE" value="0x1000"/>
10201020
<define name="wxCHK_ALLOW_3RD_STATE_FOR_USER" value="0x2000"/>
1021-
<define name="wxSYS_DEVICE_DEFAULT_FONT" value="14"/>
10221021
<define name="wxSYS_DEFAULT_PALETTE" value="15"/>
10231022
<define name="wxSYS_SYSTEM_FIXED_FONT" value="16"/>
10241023
<define name="wxSYS_DEFAULT_GUI_FONT" value="17"/>
@@ -3234,9 +3233,6 @@
32343233
<define name="wxSTC_EDI_UNA" value="6"/>
32353234
<define name="wxSTC_EDI_UNH" value="7"/>
32363235
<define name="wxSTC_EDI_BADSEGMENT" value="8"/>
3237-
<define name="wxANIMATION_TYPE_INVALID" value="0"/>
3238-
<define name="wxANIMATION_TYPE_GIF" value="1"/>
3239-
<define name="wxANIMATION_TYPE_ANI" value="2"/>
32403236
<define name="wxANIMATION_TYPE_ANIY" value="3"/>
32413237
<define name="wxANIM_UNSPECIFIED" value="-1"/>
32423238
<define name="wxANIM_DONOTREMOVE" value="0"/>
@@ -3454,13 +3450,6 @@
34543450
<define name="wxGRID_DRAW_DEFAULT" value="15"/>
34553451
<define name="wxSafeIncRef(p)" value="if ( p ) (p)-&gt;IncRef()"/>
34563452
<define name="wxSafeDecRef(p)" value="if ( p ) (p)-&gt;DecRef()"/>
3457-
<define name="wxDV_SINGLE" value="0x0000"/>
3458-
<define name="wxDV_MULTIPLE" value="0x0001"/>
3459-
<define name="wxDV_NO_HEADER" value="0x0002"/>
3460-
<define name="wxDV_HORIZ_RULES" value="0x0004"/>
3461-
<define name="wxDV_VERT_RULES" value="0x0008"/>
3462-
<define name="wxDV_ROW_LINES" value="0x0010"/>
3463-
<define name="wxDV_VARIABLE_LINE_HEIGHT" value="0x0020"/>
34643453
<define name="wxGA_PROGRESS" value="0x0010"/>
34653454
<define name="wxGA_SMOOTH" value="0x0020"/>
34663455
<define name="wxGA_TEXT" value="0x0040"/>
@@ -3675,47 +3664,9 @@
36753664
<define name="wxTB_RIGHT" value="0x4000"/>
36763665
<define name="wxTB_DEFAULT_STYLE" value="0x0004"/>
36773666
<!-- Start of standard button and menu IDs -->
3678-
<define name="wxSYS_COLOUR_SCROLLBAR" value="0"/>
3679-
<define name="wxSYS_COLOUR_DESKTOP" value="1"/>
3680-
<define name="wxSYS_COLOUR_ACTIVECAPTION" value="2"/>
3681-
<define name="wxSYS_COLOUR_INACTIVECAPTION" value="3"/>
3682-
<define name="wxSYS_COLOUR_MENU" value="4"/>
3683-
<define name="wxSYS_COLOUR_WINDOW" value="5"/>
3684-
<define name="wxSYS_COLOUR_WINDOWFRAME" value="6"/>
3685-
<define name="wxSYS_COLOUR_MENUTEXT" value="7"/>
3686-
<define name="wxSYS_COLOUR_WINDOWTEXT" value="8"/>
3687-
<define name="wxSYS_COLOUR_CAPTIONTEXT" value="9"/>
3688-
<define name="wxSYS_COLOUR_ACTIVEBORDER" value="10"/>
36893667
<define name="wxSYS_COLOUR_INACTIVEBORDER" value="11"/>
3690-
<define name="wxSYS_COLOUR_APPWORKSPACE" value="12"/>
3691-
<define name="wxSYS_COLOUR_HIGHLIGHT" value="13"/>
3692-
<define name="wxSYS_COLOUR_HIGHLIGHTTEXT" value="14"/>
3693-
<define name="wxSYS_COLOUR_BTNFACE" value="15"/>
3694-
<define name="wxSYS_COLOUR_BTNSHADOW" value="16"/>
3695-
<define name="wxSYS_COLOUR_GRAYTEXT" value="17"/>
3696-
<define name="wxSYS_COLOUR_BTNTEXT" value="18"/>
3697-
<define name="wxSYS_COLOUR_INACTIVECAPTIONTEXT" value="19"/>
3698-
<define name="wxSYS_COLOUR_BTNHIGHLIGHT" value="20"/>
3699-
<define name="wxSYS_COLOUR_3DDKSHADOW" value="21"/>
3700-
<define name="wxSYS_COLOUR_3DLIGHT" value="22"/>
3701-
<define name="wxSYS_COLOUR_INFOTEXT" value="23"/>
3702-
<define name="wxSYS_COLOUR_INFOBK" value="24"/>
3703-
<define name="wxSYS_COLOUR_LISTBOX" value="25"/>
3704-
<define name="wxSYS_COLOUR_HOTLIGHT" value="26"/>
3705-
<define name="wxSYS_COLOUR_GRADIENTACTIVECAPTION" value="27"/>
3706-
<define name="wxSYS_COLOUR_GRADIENTINACTIVECAPTION" value="28"/>
3707-
<define name="wxSYS_COLOUR_MENUHILIGHT" value="29"/>
3708-
<define name="wxSYS_COLOUR_MENUBAR" value="30"/>
3709-
<define name="wxSYS_COLOUR_LISTBOXTEXT" value="31"/>
3710-
<define name="wxSYS_COLOUR_LISTBOXHIGHLIGHTTEXT" value="32"/>
37113668
<define name="wxSYS_COLOUR_MAX" value="33"/>
37123669
<define name="wxSYS_COLOUR_BACKGROUND" value="15"/>
3713-
<define name="wxSYS_COLOUR_3DFACE" value="15"/>
3714-
<define name="wxSYS_COLOUR_3DSHADOW" value="16"/>
3715-
<define name="wxSYS_COLOUR_BTNHILIGHT" value="20"/>
3716-
<define name="wxSYS_COLOUR_3DHIGHLIGHT" value="20"/>
3717-
<define name="wxSYS_COLOUR_3DHILIGHT" value="20"/>
3718-
<define name="wxSYS_COLOUR_FRAMEBK" value="15"/>
37193670
<define name="wxID_OK" value="5100"/>
37203671
<define name="wxID_CANCEL" value="5101"/>
37213672
<define name="wxID_APPLY" value="5102"/>
@@ -3824,23 +3775,7 @@
38243775
<define name="wxBK_HITTEST_ONLABEL" value="3"/>
38253776
<define name="wxBK_HITTEST_ONITEM" value="4"/>
38263777
<define name="wxBK_HITTEST_ONPAGE" value="5"/>
3827-
<define name="wxCMD_LINE_OPTION_MANDATORY" value="0x01"/>
3828-
<define name="wxCMD_LINE_PARAM_OPTIONAL" value="0x02"/>
3829-
<define name="wxCMD_LINE_PARAM_MULTIPLE" value="0x04"/>
3830-
<define name="wxCMD_LINE_OPTION_HELP" value="0x08"/>
3831-
<define name="wxCMD_LINE_NEEDS_SEPARATOR" value="0x10"/>
3832-
<define name="wxCMD_LINE_SWITCH_NEGATABLE" value="0x20"/>
38333778
<define name="wxCMD_LINE_HIDDEN" value="0x40"/>
3834-
<define name="wxCMD_LINE_VAL_STRING" value="0"/>
3835-
<define name="wxCMD_LINE_VAL_NUMBER" value="1"/>
3836-
<define name="wxCMD_LINE_VAL_DATE" value="2"/>
3837-
<define name="wxCMD_LINE_VAL_DOUBLE" value="3"/>
3838-
<define name="wxCMD_LINE_VAL_NONE" value="4"/>
3839-
<define name="wxCMD_LINE_SWITCH" value="0"/>
3840-
<define name="wxCMD_LINE_OPTION" value="1"/>
3841-
<define name="wxCMD_LINE_PARAM" value="2"/>
3842-
<define name="wxCMD_LINE_USAGE_TEXT" value="3"/>
3843-
<define name="wxCMD_LINE_NONE" value="4"/>
38443779
<define name="wxCMD_SWITCH_OFF" value="-1"/>
38453780
<define name="wxCMD_SWITCH_NOT_FOUND" value="0"/>
38463781
<define name="wxCMD_SWITCH_ON" value="1"/>
@@ -4027,14 +3962,6 @@
40273962
<define name="wxPG_EX_WINDOW_PGMAN_STYLE_MASK" value="419471360"/>
40283963
<define name="wxPG_EX_WINDOW_STYLE_MASK" value="528068608"/>
40293964
<define name="wxPG_EX_DISABLE_TLP_TRACKING" value="0"/>
4030-
<define name="wxPG_VFB_STAY_IN_PROPERTY" value="0x01"/>
4031-
<define name="wxPG_VFB_BEEP" value="0x02"/>
4032-
<define name="wxPG_VFB_MARK_CELL" value="0x04"/>
4033-
<define name="wxPG_VFB_SHOW_MESSAGE" value="0x08"/>
4034-
<define name="wxPG_VFB_SHOW_MESSAGEBOX" value="0x10"/>
4035-
<define name="wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR" value="0x20"/>
4036-
<define name="wxPG_VFB_DEFAULT" value="20"/>
4037-
<define name="wxPG_VFB_UNDEFINED" value="0x80"/>
40383965
<define name="wxPGVFBFlags" value="unsigned char"/>
40393966
<define name="wxTL_SINGLE" value="0x0000"/>
40403967
<define name="wxTL_MULTIPLE" value="0x0001"/>
@@ -5083,15 +5010,6 @@
50835010
<define name="wxXMLDOC_NONE" value="0"/>
50845011
<define name="wxXMLDOC_KEEP_WHITESPACE_NODES" value="1"/>
50855012
<define name="wxInvalidOffset" value="-1"/>
5086-
<define name="wxPATH_NATIVE" value="0"/>
5087-
<define name="wxPATH_UNIX" value="1"/>
5088-
<define name="wxPATH_BEOS" value="1"/>
5089-
<define name="wxPATH_MAC" value="2"/>
5090-
<define name="wxPATH_DOS" value="3"/>
5091-
<define name="wxPATH_WIN" value="3"/>
5092-
<define name="wxPATH_OS2" value="3"/>
5093-
<define name="wxPATH_VMS" value="4"/>
5094-
<define name="wxPATH_MAX" value="5"/>
50955013
<define name="wxEVENT_PROPAGATE_NONE" value="0"/>
50965014
<define name="wxEVENT_PROPAGATE_MAX" value="INT_MAX"/>
50975015
<define name="WXK_CATEGORY_ARROW" value="1"/>
@@ -5111,10 +5029,6 @@
51115029
<define name="wxEVT_CATEGORY_CLIPBOARD" value="64"/>
51125030
<define name="wxEVT_CATEGORY_NATIVE_EVENTS" value="3"/>
51135031
<define name="wxEVT_CATEGORY_ALL" value="127"/>
5114-
<define name="wxSHUTDOWN_FORCE" value="1"/>
5115-
<define name="wxSHUTDOWN_POWEROFF" value="2"/>
5116-
<define name="wxSHUTDOWN_REBOOT" value="4"/>
5117-
<define name="wxSHUTDOWN_LOGOFF" value="8"/>
51185032
<define name="wxStrip_Mnemonics" value="1"/>
51195033
<define name="wxStrip_Accel" value="2"/>
51205034
<define name="wxStrip_All" value="3"/>
@@ -5141,9 +5055,6 @@
51415055
<define name="wxSIGPIPE" value="13"/>
51425056
<define name="wxSIGALRM" value="14"/>
51435057
<define name="wxSIGTERM" value="15"/>
5144-
<define name="wxStrip_Mnemonics" value="1"/>
5145-
<define name="wxStrip_Accel" value="2"/>
5146-
<define name="wxStrip_All" value="3"/>
51475058
<!-- wxThread and wxProcess priorities -->
51485059
<define name="wxPRIORITY_MIN" value="0"/>
51495060
<define name="wxPRIORITY_DEFAULT" value="50"/>

cli/cmdlineparser.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1725,6 +1725,9 @@ bool CmdLineParser::tryLoadLibrary(Library& destination, const std::string& base
17251725
case Library::ErrorCode::PLATFORM_TYPE_REDEFINED:
17261726
msg += "Platform type redefined";
17271727
break;
1728+
case Library::ErrorCode::DUPLICATE_DEFINE:
1729+
msg += "Duplicate define";
1730+
break;
17281731
}
17291732
if (!err.reason.empty())
17301733
msg += " '" + err.reason + "'";

gui/mainwindow.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -903,6 +903,9 @@ bool MainWindow::tryLoadLibrary(Library *library, const QString& filename)
903903
case Library::ErrorCode::PLATFORM_TYPE_REDEFINED:
904904
errmsg = tr("Platform type redefined");
905905
break;
906+
case Library::ErrorCode::DUPLICATE_DEFINE:
907+
errmsg = tr("Duplicate define");
908+
break;
906909
case Library::ErrorCode::UNKNOWN_ELEMENT:
907910
errmsg = tr("Unknown element");
908911
break;

lib/library.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -298,9 +298,9 @@ Library::Error Library::load(const tinyxml2::XMLDocument &doc)
298298
const char *value = node->Attribute("value");
299299
if (value == nullptr)
300300
return Error(ErrorCode::MISSING_ATTRIBUTE, "value");
301-
defines.push_back(std::string(name) +
302-
" " +
303-
value);
301+
auto result = defines.insert(std::string(name) + " " + value);
302+
if (!result.second)
303+
return Error(ErrorCode::DUPLICATE_DEFINE, name);
304304
}
305305

306306
else if (nodename == "function") {

lib/library.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,11 @@ class CPPCHECKLIB Library {
5959
public:
6060
Library() = default;
6161

62-
enum class ErrorCode { OK, FILE_NOT_FOUND, BAD_XML, UNKNOWN_ELEMENT, MISSING_ATTRIBUTE, BAD_ATTRIBUTE_VALUE, UNSUPPORTED_FORMAT, DUPLICATE_PLATFORM_TYPE, PLATFORM_TYPE_REDEFINED };
62+
enum class ErrorCode {
63+
OK,
64+
FILE_NOT_FOUND, BAD_XML, UNKNOWN_ELEMENT, MISSING_ATTRIBUTE, BAD_ATTRIBUTE_VALUE,
65+
UNSUPPORTED_FORMAT, DUPLICATE_PLATFORM_TYPE, PLATFORM_TYPE_REDEFINED, DUPLICATE_DEFINE
66+
};
6367

6468
class Error {
6569
public:
@@ -423,7 +427,7 @@ class CPPCHECKLIB Library {
423427
return func == "main" || mEntrypoints.find(func) != mEntrypoints.end();
424428
}
425429

426-
std::vector<std::string> defines; // to provide some library defines
430+
std::set<std::string> defines; // to provide some library defines
427431

428432
struct SmartPointer {
429433
std::string name;

0 commit comments

Comments
 (0)