summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--accessibility/source/extended/accessiblelistboxentry.cxx6
-rw-r--r--basctl/source/basicide/localizationmgr.cxx7
-rw-r--r--basctl/source/dlged/dlged.cxx3
-rw-r--r--basic/source/classes/sbunoobj.cxx7
-rw-r--r--compilerplugins/clang/store/oncevar.cxx141
-rw-r--r--desktop/source/app/app.cxx4
6 files changed, 89 insertions, 79 deletions
diff --git a/accessibility/source/extended/accessiblelistboxentry.cxx b/accessibility/source/extended/accessiblelistboxentry.cxx
index 39ece7abea65..ab9b216020fa 100644
--- a/accessibility/source/extended/accessiblelistboxentry.cxx
+++ b/accessibility/source/extended/accessiblelistboxentry.cxx
@@ -802,8 +802,6 @@ namespace accessibility
checkActionIndex_Impl( nIndex );
EnsureIsAlive();
- static const char sActionDesc1[] = "Check";
- static const char sActionDesc2[] = "UnCheck";
// sal_Bool bHasButtons = (getListBox()->GetStyle() & WB_HASBUTTONS)!=0;
SvTreeListEntry* pEntry = getListBox()->GetEntryFromPath( m_aEntryPath );
SvButtonState state = getListBox()->GetCheckButtonState( pEntry );
@@ -813,9 +811,9 @@ namespace accessibility
if(getAccessibleRole() == AccessibleRole::CHECK_BOX)
{
if ( state == SvButtonState::Checked )
- return OUString(sActionDesc2);
+ return OUString("UnCheck");
else if (state == SvButtonState::Unchecked)
- return OUString(sActionDesc1);
+ return OUString("Check");
}
else
{
diff --git a/basctl/source/basicide/localizationmgr.cxx b/basctl/source/basicide/localizationmgr.cxx
index e9dbf622b31f..6ee7bdd752d8 100644
--- a/basctl/source/basicide/localizationmgr.cxx
+++ b/basctl/source/basicide/localizationmgr.cxx
@@ -68,7 +68,6 @@ bool LocalizationMgr::isLibraryLocalized ()
void LocalizationMgr::handleTranslationbar ()
{
- static const char aLayoutManagerName[] = "LayoutManager";
static const char aToolBarResName[] = "private:resource/toolbar/translationbar";
Reference< beans::XPropertySet > xFrameProps
@@ -76,7 +75,7 @@ void LocalizationMgr::handleTranslationbar ()
if ( xFrameProps.is() )
{
Reference< css::frame::XLayoutManager > xLayoutManager;
- uno::Any a = xFrameProps->getPropertyValue( aLayoutManagerName );
+ uno::Any a = xFrameProps->getPropertyValue( "LayoutManager" );
a >>= xLayoutManager;
if ( xLayoutManager.is() )
{
@@ -884,8 +883,6 @@ void LocalizationMgr::deleteControlResourceIDsForDeletedEditorObject( DlgEditor*
void LocalizationMgr::setStringResourceAtDialog( const ScriptDocument& rDocument, const OUString& aLibName,
const OUString& aDlgName, const Reference< container::XNameContainer >& xDialogModel )
{
- static const char aResourceResolverPropName[] = "ResourceResolver";
-
// Get library
Reference< container::XNameContainer > xDialogLib( rDocument.getLibrary( E_DIALOGS, aLibName, true ) );
Reference< XStringResourceManager > xStringResourceManager =
@@ -907,7 +904,7 @@ void LocalizationMgr::setStringResourceAtDialog( const ScriptDocument& rDocument
}
Reference< beans::XPropertySet > xDlgPSet( xDialogModel, UNO_QUERY );
- xDlgPSet->setPropertyValue( aResourceResolverPropName, Any(xStringResourceManager) );
+ xDlgPSet->setPropertyValue( "ResourceResolver", Any(xStringResourceManager) );
}
}
diff --git a/basctl/source/dlged/dlged.cxx b/basctl/source/dlged/dlged.cxx
index 09fb33607a25..9d8b0adccd84 100644
--- a/basctl/source/dlged/dlged.cxx
+++ b/basctl/source/dlged/dlged.cxx
@@ -59,7 +59,6 @@ using namespace ::com::sun::star::io;
static const char aResourceResolverPropName[] = "ResourceResolver";
static const char aDecorationPropName[] = "Decoration";
-static const char aTitlePropName[] = "Title";
// DlgEdHint
@@ -124,7 +123,7 @@ void DlgEditor::ShowDialog()
if( !bDecoration )
{
xNewDlgModPropSet->setPropertyValue( aDecorationPropName, makeAny( true ) );
- xNewDlgModPropSet->setPropertyValue( aTitlePropName, makeAny( OUString() ) );
+ xNewDlgModPropSet->setPropertyValue( "Title", makeAny( OUString() ) );
}
}
catch(const UnknownPropertyException& )
diff --git a/basic/source/classes/sbunoobj.cxx b/basic/source/classes/sbunoobj.cxx
index 2a73adfd6f06..d4ccf6d3b98d 100644
--- a/basic/source/classes/sbunoobj.cxx
+++ b/basic/source/classes/sbunoobj.cxx
@@ -106,7 +106,6 @@ static char const ID_DBG_PROPERTIES[] = "Dbg_Properties";
static char const ID_DBG_METHODS[] = "Dbg_Methods";
static char const aSeqLevelStr[] = "[]";
-static char const defaultNameSpace[] = "ooo.vba";
// Gets the default property for an uno object. Note: There is some
// redirection built in. The property name specifies the name
@@ -3258,7 +3257,7 @@ void VBAConstantHelper::init()
{
Sequence< TypeClass > types(1);
types[ 0 ] = TypeClass_CONSTANTS;
- Reference< XTypeDescriptionEnumeration > xEnum = getTypeDescriptorEnumeration( defaultNameSpace, types, TypeDescriptionSearchDepth_INFINITE );
+ Reference< XTypeDescriptionEnumeration > xEnum = getTypeDescriptorEnumeration( "ooo.vba", types, TypeDescriptionSearchDepth_INFINITE );
if ( !xEnum.is())
{
@@ -4162,8 +4161,6 @@ void RTL_Impl_CreateUnoValue( StarBASIC* pBasic, SbxArray& rPar, bool bWrite )
(void)pBasic;
(void)bWrite;
- static const char aTypeTypeString[] = "type";
-
// 2 parameters needed
if ( rPar.Count() != 3 )
{
@@ -4175,7 +4172,7 @@ void RTL_Impl_CreateUnoValue( StarBASIC* pBasic, SbxArray& rPar, bool bWrite )
OUString aTypeName = rPar.Get(1)->GetOUString();
SbxVariable* pVal = rPar.Get(2);
- if( aTypeName == aTypeTypeString )
+ if( aTypeName == "type" )
{
SbxDataType eBaseType = pVal->SbxValue::GetType();
OUString aValTypeName;
diff --git a/compilerplugins/clang/store/oncevar.cxx b/compilerplugins/clang/store/oncevar.cxx
index e618922a2395..1947515cd749 100644
--- a/compilerplugins/clang/store/oncevar.cxx
+++ b/compilerplugins/clang/store/oncevar.cxx
@@ -9,13 +9,14 @@
#include <string>
#include <iostream>
-#include <map>
+#include <unordered_map>
#include "plugin.hxx"
+#include "check.hxx"
#include "clang/AST/CXXInheritance.h"
// Idea from tml.
-// Check for OUString variables that are
+// Check for OUString/char[] variables that are
// (1) initialised from a string literal
// (2) only used in one spot
// In which case, we might as well inline it.
@@ -27,21 +28,64 @@ class OnceVar:
public RecursiveASTVisitor<OnceVar>, public loplugin::Plugin
{
public:
- explicit OnceVar(InstantiationData const & data): Plugin(data), mbChecking(false) {}
+ explicit OnceVar(InstantiationData const & data): Plugin(data) {}
virtual void run() override {
+ // ignore some files with problematic macros
+ std::string fn( compiler.getSourceManager().getFileEntryForID(
+ compiler.getSourceManager().getMainFileID())->getName() );
+ normalizeDotDotInFilePath(fn);
+ // TODO not possible here, need to figure out how to ignore cases where we index
+ // into the string
+ if (fn == SRCDIR "/vcl/source/filter/ixpm/xpmread.cxx")
+ return;
+ if (fn == SRCDIR "/sc/source/filter/excel/xiescher.cxx")
+ return;
+ // all the constants are nicely lined up at the top of the file, seems
+ // a pity to just inline a handful.
+ if (fn == SRCDIR "/sc/source/ui/docshell/docsh.cxx")
+ return;
+ if (fn == SRCDIR "/sw/source/core/text/EnhancedPDFExportHelper.cxx")
+ return;
+ if (fn == SRCDIR "/svgio/source/svgreader/svgtoken.cxx")
+ return;
+ // TODO explicit length array
+ if (fn == SRCDIR "/sal/qa/osl/file/osl_File.cxx")
+ return;
+
TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
+
+ for (auto it = maVarUsesMap.cbegin(); it != maVarUsesMap.cend(); ++it)
+ {
+ if (it->second == 1)
+ {
+ report(DiagnosticsEngine::Warning,
+ "string/char[] var used only once, should be inlined",
+ it->first)
+ << maVarDeclSourceRangeMap[it->first];
+ report(DiagnosticsEngine::Note,
+ "to this spot",
+ maVarUseSourceRangeMap[it->first].getBegin())
+ << maVarUseSourceRangeMap[it->first];
+ }
+ }
}
- bool TraverseFunctionDecl( FunctionDecl* stmt );
bool VisitDeclRefExpr( const DeclRefExpr* );
private:
- bool mbChecking;
- std::map<SourceLocation,int> maVarUsesMap;
- std::map<SourceLocation,SourceRange> maVarDeclSourceRangeMap;
- std::map<SourceLocation,SourceRange> maVarUseSourceRangeMap;
StringRef getFilename(SourceLocation loc);
+
+ struct SourceLocationHash
+ {
+ size_t operator()( SourceLocation const & sl ) const
+ {
+ return sl.getRawEncoding();
+ }
+ };
+ std::unordered_map<SourceLocation, int, SourceLocationHash> maVarUsesMap;
+ std::unordered_map<SourceLocation, SourceRange, SourceLocationHash> maVarDeclSourceRangeMap;
+ std::unordered_map<SourceLocation, SourceRange, SourceLocationHash> maVarUseSourceRangeMap;
};
StringRef OnceVar::getFilename(SourceLocation loc)
@@ -51,69 +95,43 @@ StringRef OnceVar::getFilename(SourceLocation loc)
return name;
}
-bool OnceVar::TraverseFunctionDecl(FunctionDecl * decl)
-{
- if (ignoreLocation(decl)) {
- return true;
- }
- if (!decl->hasBody()) {
- return true;
- }
- if ( decl != decl->getCanonicalDecl() ) {
- return true;
- }
-
- // some places, it makes the code worse
- StringRef aFileName = getFilename(decl->getLocStart());
- if (aFileName.startswith(SRCDIR "/sal/qa/osl/module/osl_Module.cxx")) {
- return true;
- }
-
- maVarUsesMap.clear();
- maVarDeclSourceRangeMap.clear();
- mbChecking = true;
- TraverseStmt(decl->getBody());
- mbChecking = false;
- for (auto it = maVarUsesMap.cbegin(); it != maVarUsesMap.cend(); ++it)
- {
- if (it->second == 1)
- {
- report(DiagnosticsEngine::Warning,
- "OUString var used only once, should be inlined",
- it->first)
- << maVarDeclSourceRangeMap[it->first];
- report(DiagnosticsEngine::Note,
- "to this spot",
- maVarUseSourceRangeMap[it->first].getBegin())
- << maVarUseSourceRangeMap[it->first];
- }
- }
- return true;
-}
-
bool OnceVar::VisitDeclRefExpr( const DeclRefExpr* declRefExpr )
{
- if (!mbChecking)
+ if (ignoreLocation(declRefExpr)) {
return true;
+ }
const Decl* decl = declRefExpr->getDecl();
if (!isa<VarDecl>(decl) || isa<ParmVarDecl>(decl)) {
return true;
}
const VarDecl * varDecl = dyn_cast<VarDecl>(decl)->getCanonicalDecl();
- if (!varDecl->hasInit() || varDecl->hasGlobalStorage()) {
- return true;
- }
- if (varDecl->getType().getUnqualifiedType().getAsString().find("OUString") == std::string::npos) {
+ // ignore stuff in header files (which should really not be there, but anyhow)
+ if (!compiler.getSourceManager().isInMainFile(varDecl->getLocation())) {
return true;
}
- const CXXConstructExpr* constructExpr = dyn_cast<CXXConstructExpr>(varDecl->getInit());
- if (!constructExpr || constructExpr->getNumArgs() < 1) {
+ if (!varDecl->hasInit()) {
return true;
}
- if (!isa<StringLiteral>(constructExpr->getArg(0))) {
- return true;
+ if (const StringLiteral* stringLit = dyn_cast<StringLiteral>(varDecl->getInit())) {
+ // ignore long literals, helps to make the code more legible
+ if (stringLit->getLength() > 40) {
+ return true;
+ }
+ // ok
+ } else {
+ const CXXConstructExpr* constructExpr = dyn_cast<CXXConstructExpr>(varDecl->getInit());
+ if (!constructExpr || constructExpr->getNumArgs() != 1) {
+ return true;
+ }
+ const StringLiteral* stringLit2 = dyn_cast<StringLiteral>(varDecl->getInit());
+ if (!stringLit2) {
+ return true;
+ }
+ // ignore long literals, helps to make the code more legible
+ if (stringLit2->getLength() > 40) {
+ return true;
+ }
}
-
SourceLocation loc = varDecl->getLocation();
// ignore cases like:
@@ -122,8 +140,11 @@ bool OnceVar::VisitDeclRefExpr( const DeclRefExpr* declRefExpr )
// and
// foo(&xxx);
// where we cannot inline the declaration.
- if (isa<MemberExpr>(parentStmt(declRefExpr))
- || isa<UnaryOperator>(parentStmt(declRefExpr))) {
+ auto const tc = loplugin::TypeCheck(varDecl->getType());
+ if (tc.Class("OUString").Namespace("rtl").GlobalNamespace()
+ && (isa<MemberExpr>(parentStmt(declRefExpr))
+ || isa<UnaryOperator>(parentStmt(declRefExpr))))
+ {
maVarUsesMap[loc] = 2;
return true;
}
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index 7f278e14e546..53365f4e76a0 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -1090,12 +1090,10 @@ void handleCrashReport()
void handleSafeMode()
{
- static const char SERVICENAME_SAFEMODE[] = "com.sun.star.comp.svx.SafeModeUI";
-
css::uno::Reference< css::uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext();
Reference< css::frame::XSynchronousDispatch > xSafeModeUI(
- xContext->getServiceManager()->createInstanceWithContext(SERVICENAME_SAFEMODE, xContext),
+ xContext->getServiceManager()->createInstanceWithContext("com.sun.star.comp.svx.SafeModeUI", xContext),
css::uno::UNO_QUERY_THROW);
css::util::URL aURL;