[Libreoffice-commits] core.git: compilerplugins/clang cppuhelper/source cui/source forms/source reportdesign/source sc/qa sd/source sw/qa sw/source xmloff/source

Noel Grandin noel.grandin at collabora.co.uk
Wed Feb 1 07:57:49 UTC 2017


 compilerplugins/clang/stringconstant.cxx      |   11 ++++++++++-
 compilerplugins/clang/test/stringconstant.cxx |    3 +++
 cppuhelper/source/unourl.cxx                  |   25 ++++++++++---------------
 cui/source/tabpages/tpbitmap.cxx              |    2 +-
 forms/source/component/GroupManager.cxx       |    2 +-
 reportdesign/source/ui/report/ViewsWindow.cxx |    2 +-
 sc/qa/extras/check_data_pilot_table.cxx       |    2 +-
 sc/qa/extras/scdatapilottableobj.cxx          |    2 +-
 sc/qa/extras/scnamedrangeobj.cxx              |    2 +-
 sc/qa/extras/sctablesheetsobj.cxx             |    2 +-
 sd/source/ui/dlg/navigatr.cxx                 |    2 +-
 sw/qa/core/uwriter.cxx                        |    2 +-
 sw/qa/extras/uiwriter/uiwriter.cxx            |    4 ++--
 sw/source/filter/basflt/iodetect.cxx          |    8 ++++----
 sw/source/uibase/dochdl/gloshdl.cxx           |    2 +-
 sw/source/uibase/uiview/view.cxx              |    2 +-
 xmloff/source/forms/elementimport.cxx         |    2 +-
 17 files changed, 41 insertions(+), 34 deletions(-)

New commits:
commit dce867e8c4863c969eea3515a988630b74708a43
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue Jan 31 13:24:13 2017 +0200

    loplugin:stringconstant handle calls to constructors with one arg
    
    Change-Id: Ide9148a908bef46ba14640dfa6f556beaf6e3f60
    Reviewed-on: https://gerrit.libreoffice.org/33772
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/compilerplugins/clang/stringconstant.cxx b/compilerplugins/clang/stringconstant.cxx
index 32382461..9ae672a 100644
--- a/compilerplugins/clang/stringconstant.cxx
+++ b/compilerplugins/clang/stringconstant.cxx
@@ -66,6 +66,10 @@ bool hasOverloads(FunctionDecl const * decl, unsigned arguments) {
         if (f != nullptr && f->getMinRequiredArguments() <= arguments
             && f->getNumParams() >= arguments)
         {
+            auto consDecl = dyn_cast<CXXConstructorDecl>(f);
+            if (consDecl && consDecl->isCopyConstructor()) {
+                break;
+            }
             ++n;
             if (n == 2) {
                 return true;
@@ -1058,12 +1062,17 @@ bool StringConstant::VisitCXXConstructExpr(CXXConstructExpr const * expr) {
         return true;
     }
 
-    std::string file(compiler.getSourceManager().getFilename(
+    StringRef file(compiler.getSourceManager().getFilename(
                         compiler.getSourceManager().getSpellingLoc(expr->getLocStart())));
     if (file == SRCDIR "/sal/qa/rtl/oustringbuffer/test_oustringbuffer_tostring.cxx")
     {
         return true;
     }
+    // there is some template magic here I don't know how to work around
+    if (file.startswith(SRCDIR "/connectivity"))
+    {
+        return true;
+    }
     if (isInUnoIncludeFile(expr->getLocStart())) {
         return true;
     }
diff --git a/compilerplugins/clang/test/stringconstant.cxx b/compilerplugins/clang/test/stringconstant.cxx
index f2cf48c..392567f 100644
--- a/compilerplugins/clang/test/stringconstant.cxx
+++ b/compilerplugins/clang/test/stringconstant.cxx
@@ -18,6 +18,7 @@ extern void foo(OUString const &); // expected-error {{extern prototype in main
 
 struct Foo {
     Foo(OUString const &, int) {}
+    Foo(OUString const &) {}
 };
 
 int main() {
@@ -57,6 +58,8 @@ int main() {
     foo(OUString("xxx")); // expected-error {{in call of 'foo', replace 'OUString' constructed from a string literal directly with the string literal [loplugin:stringconstant}}
     Foo aFoo(OUString("xxx"), 1); // expected-error {{in call of 'Foo::Foo', replace 'OUString' constructed from a string literal directly with the string literal}}
     (void)aFoo;
+    Foo aFoo2(OUString("xxx")); // expected-error {{in call of 'Foo::Foo', replace 'OUString' constructed from a string literal directly with the string literal}}
+    (void)aFoo2;
 }
 
 
diff --git a/cppuhelper/source/unourl.cxx b/cppuhelper/source/unourl.cxx
index b73f176..8895119 100644
--- a/cppuhelper/source/unourl.cxx
+++ b/cppuhelper/source/unourl.cxx
@@ -79,7 +79,7 @@ inline UnoUrlDescriptor::Impl::Impl(rtl::OUString const & rDescriptor)
         case STATE_NAME0:
             if (bEnd || !isAlphanum(c))
                 throw rtl::MalformedUriException(
-                    rtl::OUString("UNO URL contains bad descriptor name"));
+                    "UNO URL contains bad descriptor name");
             nStart = i;
             eState = STATE_NAME;
             break;
@@ -93,13 +93,13 @@ inline UnoUrlDescriptor::Impl::Impl(rtl::OUString const & rDescriptor)
             }
             else if (!isAlphanum(c))
                 throw rtl::MalformedUriException(
-                    rtl::OUString("UNO URL contains bad descriptor name"));
+                    "UNO URL contains bad descriptor name");
             break;
 
         case STATE_KEY0:
             if (bEnd || !isAlphanum(c))
                 throw rtl::MalformedUriException(
-                    rtl::OUString("UNO URL contains bad parameter key"));
+                    "UNO URL contains bad parameter key");
             nStart = i;
             eState = STATE_KEY;
             break;
@@ -113,7 +113,7 @@ inline UnoUrlDescriptor::Impl::Impl(rtl::OUString const & rDescriptor)
             }
             else if (bEnd || !isAlphanum(c))
                 throw rtl::MalformedUriException(
-                    rtl::OUString("UNO URL contains bad parameter key"));
+                    "UNO URL contains bad parameter key");
             break;
 
         case STATE_VALUE:
@@ -127,7 +127,7 @@ inline UnoUrlDescriptor::Impl::Impl(rtl::OUString const & rDescriptor)
                                              rtl_UriDecodeWithCharset,
                                              RTL_TEXTENCODING_UTF8))).second)
                     throw rtl::MalformedUriException(
-                        rtl::OUString("UNO URL contains duplicated parameter"));
+                        "UNO URL contains duplicated parameter");
                 eState = STATE_KEY0;
             }
             break;
@@ -207,24 +207,20 @@ private:
 inline UnoUrl::Impl * UnoUrl::Impl::create(rtl::OUString const & rUrl)
 {
     if (!rUrl.startsWithIgnoreAsciiCase("uno:"))
-        throw rtl::MalformedUriException(
-            rtl::OUString("UNO URL does not start with \"uno:\""));
+        throw rtl::MalformedUriException("UNO URL does not start with \"uno:\"");
     sal_Int32 i = RTL_CONSTASCII_LENGTH("uno:");
     sal_Int32 j = rUrl.indexOf(';', i);
     if (j < 0)
-        throw rtl::MalformedUriException(
-            rtl::OUString("UNO URL has too few semicolons"));
+        throw rtl::MalformedUriException("UNO URL has too few semicolons");
     rtl::OUString aConnection(rUrl.copy(i, j - i));
     i = j + 1;
     j = rUrl.indexOf(0x3B, i); // ';'
     if (j < 0)
-        throw rtl::MalformedUriException(
-            rtl::OUString("UNO URL has too few semicolons"));
+        throw rtl::MalformedUriException("UNO URL has too few semicolons");
     rtl::OUString aProtocol(rUrl.copy(i, j - i));
     i = j + 1;
     if (i == rUrl.getLength())
-        throw rtl::MalformedUriException(
-            rtl::OUString("UNO URL contains empty ObjectName"));
+        throw rtl::MalformedUriException("UNO URL contains empty ObjectName");
     for (j = i; j < rUrl.getLength(); ++j)
     {
         sal_Unicode c = rUrl[j];
@@ -235,8 +231,7 @@ inline UnoUrl::Impl * UnoUrl::Impl::create(rtl::OUString const & rUrl)
             && c != 0x2F && c != 0x3A && c != 0x3D // '/', ':', '='
             && c != 0x3F && c != 0x40 && c != 0x5F // '?', '@', '_'
             && c != 0x7E) // '~'
-            throw rtl::MalformedUriException(
-                rtl::OUString("UNO URL contains invalid ObjectName"));
+            throw rtl::MalformedUriException("UNO URL contains invalid ObjectName");
     }
     return new Impl(aConnection, aProtocol, rUrl.copy(i));
 }
diff --git a/cui/source/tabpages/tpbitmap.cxx b/cui/source/tabpages/tpbitmap.cxx
index a703aef..7b51f59 100644
--- a/cui/source/tabpages/tpbitmap.cxx
+++ b/cui/source/tabpages/tpbitmap.cxx
@@ -750,7 +750,7 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ModifyTileOffsetHdl, Edit&, void)
 IMPL_LINK_NOARG(SvxBitmapTabPage, ClickImportHdl, Button*, void)
 {
     ResMgr& rMgr = CUI_MGR();
-    SvxOpenGraphicDialog aDlg( OUString("Import") );
+    SvxOpenGraphicDialog aDlg( "Import" );
     aDlg.EnableLink(false);
     long nCount = m_pBitmapList->Count();
 
diff --git a/forms/source/component/GroupManager.cxx b/forms/source/component/GroupManager.cxx
index d328122..3444686 100644
--- a/forms/source/component/GroupManager.cxx
+++ b/forms/source/component/GroupManager.cxx
@@ -193,7 +193,7 @@ Sequence< Reference<XControlModel>  > OGroup::GetControlModels() const
 }
 
 OGroupManager::OGroupManager(const Reference< XContainer >& _rxContainer)
-    :m_pCompGroup( new OGroup( OUString("AllComponentGroup") ) )
+    :m_pCompGroup( new OGroup( "AllComponentGroup" ) )
     ,m_xContainer(_rxContainer)
 {
     osl_atomic_increment(&m_refCount);
diff --git a/reportdesign/source/ui/report/ViewsWindow.cxx b/reportdesign/source/ui/report/ViewsWindow.cxx
index f251a3f..c7e4234 100644
--- a/reportdesign/source/ui/report/ViewsWindow.cxx
+++ b/reportdesign/source/ui/report/ViewsWindow.cxx
@@ -1014,7 +1014,7 @@ void OViewsWindow::BegDragObj_createInvisibleObjectAtPosition(const Rectangle& _
 
         if ( &rView != &_rSection )
         {
-            SdrObject *pNewObj = new SdrUnoObj(OUString("com.sun.star.form.component.FixedText"));
+            SdrObject *pNewObj = new SdrUnoObj("com.sun.star.form.component.FixedText");
             pNewObj->SetLogicRect(_aRect);
 
             pNewObj->Move(Size(0, aNewPos.Y()));
diff --git a/sc/qa/extras/check_data_pilot_table.cxx b/sc/qa/extras/check_data_pilot_table.cxx
index 11c3ee3..d69fd5d 100644
--- a/sc/qa/extras/check_data_pilot_table.cxx
+++ b/sc/qa/extras/check_data_pilot_table.cxx
@@ -73,7 +73,7 @@ private:
 
 CheckDataPilotTable::CheckDataPilotTable()
      : CalcUnoApiTest("/sc/qa/extras/testdocuments"),
-       apitest::XNamed(OUString("DataPilotTable"))
+       apitest::XNamed("DataPilotTable")
 {
 }
 
diff --git a/sc/qa/extras/scdatapilottableobj.cxx b/sc/qa/extras/scdatapilottableobj.cxx
index 8464e2f..8ce6d6b 100644
--- a/sc/qa/extras/scdatapilottableobj.cxx
+++ b/sc/qa/extras/scdatapilottableobj.cxx
@@ -68,7 +68,7 @@ uno::Reference< lang::XComponent > ScDataPilotTableObj::mxComponent;
 
 ScDataPilotTableObj::ScDataPilotTableObj()
     : CalcUnoApiTest("/sc/qa/extras/testdocuments"),
-      apitest::XNamed(OUString("DataPilotTable"))
+      apitest::XNamed("DataPilotTable")
 {
 }
 
diff --git a/sc/qa/extras/scnamedrangeobj.cxx b/sc/qa/extras/scnamedrangeobj.cxx
index c1cbc93..efca322 100644
--- a/sc/qa/extras/scnamedrangeobj.cxx
+++ b/sc/qa/extras/scnamedrangeobj.cxx
@@ -58,7 +58,7 @@ uno::Reference< lang::XComponent > ScNamedRangeObj::mxComponent;
 
 ScNamedRangeObj::ScNamedRangeObj():
         CalcUnoApiTest("/sc/qa/extras/testdocuments"),
-        apitest::XNamed(OUString("NamedRange")),
+        apitest::XNamed("NamedRange"),
         apitest::XCellRangeReferrer(table::CellRangeAddress(0,1,7,1,7))
 {
 }
diff --git a/sc/qa/extras/sctablesheetsobj.cxx b/sc/qa/extras/sctablesheetsobj.cxx
index 51636f2..a67bf2d 100644
--- a/sc/qa/extras/sctablesheetsobj.cxx
+++ b/sc/qa/extras/sctablesheetsobj.cxx
@@ -57,7 +57,7 @@ sal_Int32 ScTableSheetsObj::nTest = 0;
 
 ScTableSheetsObj::ScTableSheetsObj():
             CalcUnoApiTest("/sc/qa/extras/testdocuments"),
-            apitest::XNameContainer(OUString("Sheet2"))
+            apitest::XNameContainer("Sheet2")
 {
 
 }
diff --git a/sd/source/ui/dlg/navigatr.cxx b/sd/source/ui/dlg/navigatr.cxx
index c12529f..9d67660 100644
--- a/sd/source/ui/dlg/navigatr.cxx
+++ b/sd/source/ui/dlg/navigatr.cxx
@@ -499,7 +499,7 @@ bool SdNavigatorWin::InsertFile(const OUString& rFileName)
         if (aFileName != maDropFileName)
         {
             SfxMedium aMed(aFileName, (StreamMode::READ | StreamMode::SHARE_DENYNONE));
-            SfxFilterMatcher aMatch( OUString("simpress") );
+            SfxFilterMatcher aMatch( "simpress" );
             aMed.UseInteractionHandler( true );
             nErr = aMatch.GuessFilter(aMed, pFilter);
         }
diff --git a/sw/qa/core/uwriter.cxx b/sw/qa/core/uwriter.cxx
index 4a123fc..7de5c5d 100644
--- a/sw/qa/core/uwriter.cxx
+++ b/sw/qa/core/uwriter.cxx
@@ -701,7 +701,7 @@ void SwDocTest::testSwScanner()
 
         const sal_Int32 nNextPos = aPaM.GetPoint()->nContent.GetIndex();
         CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(nPos+1), nNextPos);
-        SwFormatRefMark aRef(OUString("refmark"));
+        SwFormatRefMark aRef("refmark");
         pTA = pTextNode->InsertItem(aRef, nNextPos, nNextPos);
         CPPUNIT_ASSERT(pTA);
 
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index da819d4..eb49924 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -1816,7 +1816,7 @@ void SwUiWriterTest::testTdf78742()
     //testing with service type and any .ods file
     OUString path = m_directories.getURLFromSrc(DATA_DIRECTORY) + "calc-data-source.ods";
     SfxMedium aMedium(path, StreamMode::READ | StreamMode::SHARE_DENYWRITE);
-    SfxFilterMatcher aMatcher(OUString("com.sun.star.text.TextDocument"));
+    SfxFilterMatcher aMatcher("com.sun.star.text.TextDocument");
     std::shared_ptr<const SfxFilter> pFilter;
     sal_uInt32 filter = aMatcher.DetectFilter(aMedium, pFilter);
     CPPUNIT_ASSERT_EQUAL(ERRCODE_IO_ABORT, filter);
@@ -1833,7 +1833,7 @@ void SwUiWriterTest::testTdf78742()
     //testing with service type and any .odt file
     OUString path2 = m_directories.getURLFromSrc(DATA_DIRECTORY) + "fdo69893.odt";
     SfxMedium aMedium3(path2, StreamMode::READ | StreamMode::SHARE_DENYWRITE);
-    SfxFilterMatcher aMatcher3(OUString("com.sun.star.text.TextDocument"));
+    SfxFilterMatcher aMatcher3("com.sun.star.text.TextDocument");
     std::shared_ptr<const SfxFilter> pFilter3;
     sal_uInt32 filter3 = aMatcher3.DetectFilter(aMedium3, pFilter3);
     CPPUNIT_ASSERT_EQUAL(ERRCODE_CLASS_NONE, filter3);
diff --git a/sw/source/filter/basflt/iodetect.cxx b/sw/source/filter/basflt/iodetect.cxx
index 6522a92..c9cf78c 100644
--- a/sw/source/filter/basflt/iodetect.cxx
+++ b/sw/source/filter/basflt/iodetect.cxx
@@ -63,8 +63,8 @@ const OUString SwIoSystem::GetSubStorageName( const SfxFilter& rFltr )
 std::shared_ptr<const SfxFilter> SwIoSystem::GetFilterOfFormat(const OUString& rFormatNm,
     const SfxFilterContainer* pCnt)
 {
-    SfxFilterContainer aCntSw( OUString(sSWRITER) );
-    SfxFilterContainer aCntSwWeb( OUString(sSWRITERWEB) );
+    SfxFilterContainer aCntSw( sSWRITER );
+    SfxFilterContainer aCntSwWeb( sSWRITERWEB );
     const SfxFilterContainer* pFltCnt = pCnt ? pCnt : ( IsDocShellRegistered() ? &aCntSw : &aCntSwWeb );
 
     do {
@@ -143,8 +143,8 @@ bool SwIoSystem::IsValidStgFilter(SotStorage& rStg, const SfxFilter& rFilter)
 // Returns the internal FilterName.
 std::shared_ptr<const SfxFilter> SwIoSystem::GetFileFilter(const OUString& rFileName)
 {
-    SfxFilterContainer aCntSw( OUString(sSWRITER) );
-    SfxFilterContainer aCntSwWeb( OUString(sSWRITERWEB) );
+    SfxFilterContainer aCntSw( sSWRITER );
+    SfxFilterContainer aCntSwWeb( sSWRITERWEB );
     const SfxFilterContainer* pFCntnr = IsDocShellRegistered() ? &aCntSw : &aCntSwWeb;
 
     SfxFilterMatcher aMatcher( pFCntnr->GetName() );
diff --git a/sw/source/uibase/dochdl/gloshdl.cxx b/sw/source/uibase/dochdl/gloshdl.cxx
index eea2fc3..402af7f 100644
--- a/sw/source/uibase/dochdl/gloshdl.cxx
+++ b/sw/source/uibase/dochdl/gloshdl.cxx
@@ -706,7 +706,7 @@ bool SwGlossaryHdl::ImportGlossaries( const OUString& rName )
     {
         std::shared_ptr<const SfxFilter> pFilter;
         std::unique_ptr<SfxMedium> pMed(new SfxMedium( rName, StreamMode::READ, nullptr, nullptr ));
-        SfxFilterMatcher aMatcher( OUString("swriter") );
+        SfxFilterMatcher aMatcher( "swriter" );
         pMed->UseInteractionHandler( true );
         if (!aMatcher.GuessFilter(*pMed, pFilter, SfxFilterFlags::NONE))
         {
diff --git a/sw/source/uibase/uiview/view.cxx b/sw/source/uibase/uiview/view.cxx
index 9e25f42..f12fca5 100644
--- a/sw/source/uibase/uiview/view.cxx
+++ b/sw/source/uibase/uiview/view.cxx
@@ -1475,7 +1475,7 @@ void SwView::WriteUserDataSequence ( uno::Sequence < beans::PropertyValue >& rSe
     std::vector<beans::PropertyValue> aVector;
 
     sal_uInt16 nViewID( GetViewFrame()->GetCurViewId());
-    OUStringBuffer sBuffer ( OUString( "view" ) );
+    OUStringBuffer sBuffer( "view" );
     ::sax::Converter::convertNumber(sBuffer, static_cast<sal_Int32>(nViewID));
     aVector.push_back(comphelper::makePropertyValue("ViewId", sBuffer.makeStringAndClear()));
 
diff --git a/xmloff/source/forms/elementimport.cxx b/xmloff/source/forms/elementimport.cxx
index 117b99f..9318025 100644
--- a/xmloff/source/forms/elementimport.cxx
+++ b/xmloff/source/forms/elementimport.cxx
@@ -1488,7 +1488,7 @@ namespace xmloff
         PropertyValueArray::iterator aDefaultControlPropertyPos = ::std::find_if(
             m_aValues.begin(),
             m_aValues.end(),
-            EqualName( OUString( "DefaultControl"  ) )
+            EqualName( "DefaultControl" )
         );
         if ( aDefaultControlPropertyPos != m_aValues.end() )
         {


More information about the Libreoffice-commits mailing list