removed 'empty catch block' check. to avoid false positives we'll need to check if it is bad with an empty catch block (dead pointer/undefined behaviour/etc)
This commit is contained in:
parent
b32534b722
commit
cfbc06c8b6
|
@ -4040,25 +4040,6 @@ void CheckOther::postIncrement()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckOther::checkEmptyCatchBlock()
|
|
||||||
{
|
|
||||||
if (!_settings->_checkCodingStyle)
|
|
||||||
return;
|
|
||||||
|
|
||||||
const char pattern[] = "} catch (";
|
|
||||||
for (const Token *tok = Token::findmatch(_tokenizer->tokens(), pattern); tok;
|
|
||||||
tok = Token::findmatch(tok, pattern))
|
|
||||||
{
|
|
||||||
tok = tok->tokAt(2);
|
|
||||||
|
|
||||||
if (Token::simpleMatch(tok->link(), ") { }"))
|
|
||||||
{
|
|
||||||
emptyCatchBlockError(tok);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void CheckOther::cstyleCastError(const Token *tok)
|
void CheckOther::cstyleCastError(const Token *tok)
|
||||||
{
|
{
|
||||||
reportError(tok, Severity::style, "cstyleCast", "C-style pointer casting");
|
reportError(tok, Severity::style, "cstyleCast", "C-style pointer casting");
|
||||||
|
@ -4221,11 +4202,6 @@ void CheckOther::fflushOnInputStreamError(const Token *tok, const std::string &v
|
||||||
"fflushOnInputStream", "fflush() called on input stream \"" + varname + "\" may result in undefined behaviour");
|
"fflushOnInputStream", "fflush() called on input stream \"" + varname + "\" may result in undefined behaviour");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckOther::emptyCatchBlockError(const Token *tok)
|
|
||||||
{
|
|
||||||
reportError(tok, Severity::style, "emptyCatchBlock", "Empty catch block");
|
|
||||||
}
|
|
||||||
|
|
||||||
void CheckOther::sizeofsizeof()
|
void CheckOther::sizeofsizeof()
|
||||||
{
|
{
|
||||||
if (!_settings->_checkCodingStyle)
|
if (!_settings->_checkCodingStyle)
|
||||||
|
|
|
@ -62,7 +62,6 @@ public:
|
||||||
checkOther.strPlusChar();
|
checkOther.strPlusChar();
|
||||||
checkOther.sizeofsizeof();
|
checkOther.sizeofsizeof();
|
||||||
checkOther.sizeofCalculation();
|
checkOther.sizeofCalculation();
|
||||||
checkOther.checkEmptyCatchBlock();
|
|
||||||
checkOther.checkRedundantAssignmentInSwitch();
|
checkOther.checkRedundantAssignmentInSwitch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,9 +174,6 @@ public:
|
||||||
/** @brief %Check for using fflush() on an input stream*/
|
/** @brief %Check for using fflush() on an input stream*/
|
||||||
void checkFflushOnInputStream();
|
void checkFflushOnInputStream();
|
||||||
|
|
||||||
/** @brief %Check for empty catch() blocks*/
|
|
||||||
void checkEmptyCatchBlock();
|
|
||||||
|
|
||||||
/** @brief %Check for 'sizeof sizeof ..' */
|
/** @brief %Check for 'sizeof sizeof ..' */
|
||||||
void sizeofsizeof();
|
void sizeofsizeof();
|
||||||
void sizeofsizeofError(const Token *tok);
|
void sizeofsizeofError(const Token *tok);
|
||||||
|
@ -222,7 +218,6 @@ public:
|
||||||
void postIncrementError(const Token *tok, const std::string &var_name, const bool isIncrement);
|
void postIncrementError(const Token *tok, const std::string &var_name, const bool isIncrement);
|
||||||
void emptyStringTestError(const Token *tok, const std::string &var_name, const bool isTestForEmpty);
|
void emptyStringTestError(const Token *tok, const std::string &var_name, const bool isTestForEmpty);
|
||||||
void fflushOnInputStreamError(const Token *tok, const std::string &varname);
|
void fflushOnInputStreamError(const Token *tok, const std::string &varname);
|
||||||
void emptyCatchBlockError(const Token *tok);
|
|
||||||
void redundantAssignmentInSwitchError(const Token *tok, const std::string &varname);
|
void redundantAssignmentInSwitchError(const Token *tok, const std::string &varname);
|
||||||
void selfAssignmentError(const Token *tok, const std::string &varname);
|
void selfAssignmentError(const Token *tok, const std::string &varname);
|
||||||
|
|
||||||
|
@ -254,7 +249,6 @@ public:
|
||||||
strPlusChar(0);
|
strPlusChar(0);
|
||||||
sizeofsizeofError(0);
|
sizeofsizeofError(0);
|
||||||
sizeofCalculationError(0);
|
sizeofCalculationError(0);
|
||||||
emptyCatchBlockError(0);
|
|
||||||
redundantAssignmentInSwitchError(0, "varname");
|
redundantAssignmentInSwitchError(0, "varname");
|
||||||
selfAssignmentError(0, "varname");
|
selfAssignmentError(0, "varname");
|
||||||
invalidScanfError(0);
|
invalidScanfError(0);
|
||||||
|
@ -293,7 +287,6 @@ public:
|
||||||
"* variable scope can be limited\n"
|
"* variable scope can be limited\n"
|
||||||
"* condition that is always true/false\n"
|
"* condition that is always true/false\n"
|
||||||
"* unusal pointer arithmetic. For example: \"abc\" + 'd'\n"
|
"* unusal pointer arithmetic. For example: \"abc\" + 'd'\n"
|
||||||
"* empty catch() block\n"
|
|
||||||
"* redundant assignment in a switch statement\n"
|
"* redundant assignment in a switch statement\n"
|
||||||
"* look for 'sizeof sizeof ..'\n"
|
"* look for 'sizeof sizeof ..'\n"
|
||||||
"* look for calculations inside sizeof()\n"
|
"* look for calculations inside sizeof()\n"
|
||||||
|
|
|
@ -101,8 +101,6 @@ private:
|
||||||
TEST_CASE(sizeofsizeof);
|
TEST_CASE(sizeofsizeof);
|
||||||
TEST_CASE(sizeofCalculation);
|
TEST_CASE(sizeofCalculation);
|
||||||
|
|
||||||
TEST_CASE(emptyCatchBlock);
|
|
||||||
|
|
||||||
TEST_CASE(switchRedundantAssignmentTest);
|
TEST_CASE(switchRedundantAssignmentTest);
|
||||||
|
|
||||||
TEST_CASE(selfAssignment);
|
TEST_CASE(selfAssignment);
|
||||||
|
@ -127,7 +125,6 @@ private:
|
||||||
|
|
||||||
checkOther.sizeofsizeof();
|
checkOther.sizeofsizeof();
|
||||||
checkOther.sizeofCalculation();
|
checkOther.sizeofCalculation();
|
||||||
checkOther.checkEmptyCatchBlock();
|
|
||||||
checkOther.checkRedundantAssignmentInSwitch();
|
checkOther.checkRedundantAssignmentInSwitch();
|
||||||
|
|
||||||
// Simplify token list..
|
// Simplify token list..
|
||||||
|
@ -2853,70 +2850,6 @@ private:
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void emptyCatchBlock()
|
|
||||||
{
|
|
||||||
check("void Open(String name)\n"
|
|
||||||
"{\n"
|
|
||||||
" try\n"
|
|
||||||
" {\n"
|
|
||||||
" foo();\n"
|
|
||||||
" }\n"
|
|
||||||
" catch (FileNotFoundException e)\n"
|
|
||||||
" {\n"
|
|
||||||
" }\n"
|
|
||||||
"}\n");
|
|
||||||
ASSERT_EQUALS("[test.cpp:7]: (style) Empty catch block\n", errout.str());
|
|
||||||
|
|
||||||
check("void Open(String name)\n"
|
|
||||||
"{\n"
|
|
||||||
" try\n"
|
|
||||||
" {\n"
|
|
||||||
" foo();\n"
|
|
||||||
" }\n"
|
|
||||||
" catch (char *errorMsg)\n"
|
|
||||||
" {\n"
|
|
||||||
" }\n"
|
|
||||||
"}\n");
|
|
||||||
ASSERT_EQUALS("[test.cpp:7]: (style) Empty catch block\n", errout.str());
|
|
||||||
|
|
||||||
check("void Open(String name)\n"
|
|
||||||
"{\n"
|
|
||||||
" try\n"
|
|
||||||
" {\n"
|
|
||||||
" foo();\n"
|
|
||||||
" }\n"
|
|
||||||
" catch (const FileNotFoundException& e)\n"
|
|
||||||
" {\n"
|
|
||||||
" }\n"
|
|
||||||
"}\n");
|
|
||||||
ASSERT_EQUALS("[test.cpp:7]: (style) Empty catch block\n", errout.str());
|
|
||||||
|
|
||||||
check("void Open(String name)\n"
|
|
||||||
"{\n"
|
|
||||||
" try\n"
|
|
||||||
" {\n"
|
|
||||||
" foo();\n"
|
|
||||||
" }\n"
|
|
||||||
" catch (...)\n"
|
|
||||||
" {\n"
|
|
||||||
" }\n"
|
|
||||||
"}\n");
|
|
||||||
ASSERT_EQUALS("[test.cpp:7]: (style) Empty catch block\n", errout.str());
|
|
||||||
|
|
||||||
check("void Open(String name)\n"
|
|
||||||
"{\n"
|
|
||||||
" try\n"
|
|
||||||
" {\n"
|
|
||||||
" foo();\n"
|
|
||||||
" }\n"
|
|
||||||
" catch (const FileNotFoundException& e)\n"
|
|
||||||
" {\n"
|
|
||||||
" prinf(\"File not found\");\n"
|
|
||||||
" }\n"
|
|
||||||
"}\n");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void switchRedundantAssignmentTest()
|
void switchRedundantAssignmentTest()
|
||||||
{
|
{
|
||||||
check("void foo()\n"
|
check("void foo()\n"
|
||||||
|
|
Loading…
Reference in New Issue