bool MoveParam::VisitCXXOperatorCallExpr(const CXXOperatorCallExpr* callExpr)
{ if (ignoreLocation(callExpr)) returntrue; if (!callExpr->isAssignmentOp()) returntrue; auto qt = callExpr->getType(); if (!isContainerType(qt)) returntrue; auto declRef = dyn_cast<DeclRefExpr>(callExpr->getArg(1)->IgnoreParenImpCasts()); if (!declRef) returntrue;
auto parmVarDecl = dyn_cast_or_null<ParmVarDecl>(declRef->getDecl()); if (!parmVarDecl) returntrue;
if (!loplugin::TypeCheck(parmVarDecl->getType()).LvalueReference().Const()) returntrue;
StringRef aFileName = getFilenameOfLocation(
compiler.getSourceManager().getSpellingLoc(parmVarDecl->getBeginLoc())); if (loplugin::hasPathnamePrefix(aFileName,
SRCDIR "/svx/source/sidebar/line/LineWidthValueSet.cxx")) returntrue;
report(DiagnosticsEngine::Warning, "rather use move && param1", callExpr->getBeginLoc());
returntrue;
}
bool MoveParam::VisitCXXConstructExpr(const CXXConstructExpr* constructExpr)
{ if (ignoreLocation(constructExpr->getBeginLoc())) returntrue; if (isInUnoIncludeFile(constructExpr->getBeginLoc())) returntrue;
auto qt = constructExpr->getType(); if (!isContainerType(qt)) returntrue;
if (constructExpr->getNumArgs() != 1) returntrue;
auto declRef = dyn_cast<DeclRefExpr>(constructExpr->getArg(0)->IgnoreParenImpCasts()); if (!declRef) returntrue;
auto parmVarDecl = dyn_cast_or_null<ParmVarDecl>(declRef->getDecl()); if (!parmVarDecl) returntrue;
if (!loplugin::TypeCheck(parmVarDecl->getType()).LvalueReference().Const()) returntrue;
StringRef aFileName = getFilenameOfLocation(
compiler.getSourceManager().getSpellingLoc(parmVarDecl->getBeginLoc())); if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/include/drawinglayer/primitive2d/Primitive2DContainer.hxx")) returntrue; if (loplugin::hasPathnamePrefix(aFileName,
SRCDIR "/include/drawinglayer/primitive3d/baseprimitive3d.hxx")) returntrue; if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/svx/source/svdraw/svdmrkv.cxx")) returntrue; if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/include/editeng/swafopt.hxx")) returntrue; if (loplugin::hasPathnamePrefix(
aFileName, SRCDIR "/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx")) returntrue; if (loplugin::hasPathnamePrefix(aFileName,
SRCDIR "/chart2/source/tools/InternalDataProvider.cxx")) returntrue; if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/sc/source/core/data/attrib.cxx")) returntrue; if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/sw/source/core/doc/docfmt.cxx")) returntrue; if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/configmgr/source/modifications.cxx")) returntrue; if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/svx/source/dialog/srchdlg.cxx")) returntrue; if (loplugin::hasPathnamePrefix(aFileName,
SRCDIR "/stoc/source/servicemanager/servicemanager.cxx")) returntrue;
report(DiagnosticsEngine::Warning, "rather use move && param3", constructExpr->getBeginLoc());
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.