Extend loplugin:cppunitassertequals to CPPUNIT_ASSERT_LESS etc.

(Just in case, even though this doesn't find any actual issues in the code for
now.)

Change-Id: I80b8b0a647e89fdb6a4f0f4363fa1c3df8e5ddeb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147942
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
Stephan Bergmann 2023-02-28 08:06:00 +01:00
parent f13eb476ea
commit 569977cfe1
2 changed files with 58 additions and 1 deletions

View file

@ -145,6 +145,58 @@ bool CppunitAssertEquals::VisitCallExpr(const CallExpr* callExpr)
callExpr->getExprLoc())
<< callExpr->getSourceRange();
}
if (loplugin::DeclCheck(decl).Function("assertLess").
Namespace("CppUnit").GlobalNamespace())
{
// can happen in template test code that both params are compile time constants
if (isCompileTimeConstant(callExpr->getArg(0)))
return true;
if (isCompileTimeConstant(callExpr->getArg(1)))
report(
DiagnosticsEngine::Warning,
"CPPUNIT_ASSERT_LESS parameters look switched, expected value should be first param",
callExpr->getExprLoc())
<< callExpr->getSourceRange();
}
if (loplugin::DeclCheck(decl).Function("assertLessEqual").
Namespace("CppUnit").GlobalNamespace())
{
// can happen in template test code that both params are compile time constants
if (isCompileTimeConstant(callExpr->getArg(0)))
return true;
if (isCompileTimeConstant(callExpr->getArg(1)))
report(
DiagnosticsEngine::Warning,
"CPPUNIT_ASSERT_LESSEQUAL parameters look switched, expected value should be first param",
callExpr->getExprLoc())
<< callExpr->getSourceRange();
}
if (loplugin::DeclCheck(decl).Function("assertGreater").
Namespace("CppUnit").GlobalNamespace())
{
// can happen in template test code that both params are compile time constants
if (isCompileTimeConstant(callExpr->getArg(0)))
return true;
if (isCompileTimeConstant(callExpr->getArg(1)))
report(
DiagnosticsEngine::Warning,
"CPPUNIT_ASSERT_GREATER parameters look switched, expected value should be first param",
callExpr->getExprLoc())
<< callExpr->getSourceRange();
}
if (loplugin::DeclCheck(decl).Function("assertGreaterEqual").
Namespace("CppUnit").GlobalNamespace())
{
// can happen in template test code that both params are compile time constants
if (isCompileTimeConstant(callExpr->getArg(0)))
return true;
if (isCompileTimeConstant(callExpr->getArg(1)))
report(
DiagnosticsEngine::Warning,
"CPPUNIT_ASSERT_GREATEREQUAL parameters look switched, expected value should be first param",
callExpr->getExprLoc())
<< callExpr->getSourceRange();
}
return true;
}

View file

@ -21,7 +21,7 @@
void test(
bool b1, bool b2, OUString const & s1, OUString const & s2, T t, void * p, std::nullptr_t n,
double d)
double d, int i)
{
CppUnit::Asserter::failIf(b1,"");
CPPUNIT_ASSERT(b1 && b2); // expected-error {{rather split into two CPPUNIT_ASSERT [loplugin:cppunitassertequals]}}
@ -79,6 +79,11 @@ void test(
CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE("foo", d, 1.0, 0.1); // expected-error {{CPPUNIT_ASSERT_DOUBLES_EQUALS parameters look switched, expected value should be first param [loplugin:cppunitassertequals]}}
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, d, 0.1);
CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE("foo", 1.0, d, 0.1);
CPPUNIT_ASSERT_LESS(i, 1); // expected-error {{CPPUNIT_ASSERT_LESS parameters look switched, expected value should be first param [loplugin:cppunitassertequals]}}
CPPUNIT_ASSERT_LESSEQUAL(i, 1); // expected-error {{CPPUNIT_ASSERT_LESSEQUAL parameters look switched, expected value should be first param [loplugin:cppunitassertequals]}}
CPPUNIT_ASSERT_GREATER(i, 1); // expected-error {{CPPUNIT_ASSERT_GREATER parameters look switched, expected value should be first param [loplugin:cppunitassertequals]}}
CPPUNIT_ASSERT_GREATEREQUAL(i, 1); // expected-error {{CPPUNIT_ASSERT_GREATEREQUAL parameters look switched, expected value should be first param [loplugin:cppunitassertequals]}}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */