/** Look for appending result of adding OUString/OString to OUStringBuffer
*/ namespace
{ class StringBuffer : public loplugin::FilteringPlugin<StringBuffer>
{ public: explicit StringBuffer(loplugin::InstantiationData const& rData)
: FilteringPlugin(rData)
{
}
bool StringBuffer::VisitCXXMemberCallExpr(CXXMemberCallExpr const* memberCallExpr)
{ if (ignoreLocation(memberCallExpr)) returntrue; if (!loplugin::DeclCheck(memberCallExpr->getRecordDecl())
.Class("OUStringBuffer")
.Namespace("rtl")
.GlobalNamespace()) returntrue; if (!memberCallExpr->getMethodDecl()->getIdentifier()) returntrue; if (memberCallExpr->getMethodDecl()->getName() != "append") returntrue; auto matTemp = dyn_cast<MaterializeTemporaryExpr>(memberCallExpr->getArg(0)); if (!matTemp) returntrue; if (!isa<CXXOperatorCallExpr>(matTemp->getSubExpr())) returntrue;
report(DiagnosticsEngine::Warning, "appending added result of OUString to OUStringBuffer, rather do .append(x).append(y)",
memberCallExpr->getBeginLoc())
<< memberCallExpr->getSourceRange(); returntrue;
}
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.