summaryrefslogtreecommitdiffstats
path: root/compilerplugins/clang
Commit message (Collapse)AuthorAgeFilesLines
* SAL_DEBUG_TRACE is like SAL_DEBUGTor Lillqvist2017-02-201-1/+1
| | | | | | | | Change-Id: I7b4585259255b9869e5f6ec03fc901db29c10bc8 Reviewed-on: https://gerrit.libreoffice.org/34481 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tor Lillqvist <tml@collabora.com> (cherry picked from commit 962c820d34d0e00dc3d947b17db752110cf35e40)
* loplugin:vclwidgets check for assigning from VclPt<T> to T*Noel Grandin2017-02-182-20/+150
| | | | | | | | | | | | | | | Inspired by a recent bug report where we were assigning the result of VclPtr<T>::Create to a raw pointer. As a consequence, we also need to change various methods that were returning newly created Window subclasses via raw pointer, to instead return those via VclPtr Change-Id: I8118e0195a5b2b4780e646cfb0e151692e54ae2b Reviewed-on: https://gerrit.libreoffice.org/31318 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> (cherry picked from commit e6ffb539ee232ea0c679928ff456c1cf97429f63)
* vcl: separate ImplImageTree - ImageTree singleton and public ifaceTomaž Vajngerl2016-12-191-2/+2
| | | | | | | | | | | | | | ImplImageTree was used outside of VCL which is not consistent with the name and the header also contains a lot of implementation detail. This separates the implementation to ImplImageTree and the public interface and singleton to ImageTree only. Change-Id: I3a26444f0f6971a6b1d83472e9cef19c93192d3e Reviewed-on: https://gerrit.libreoffice.org/32134 Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Tested-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit bf5f6df9e47bd31dc052c6411f6f88ec2d4e3cea) Reviewed-on: https://gerrit.libreoffice.org/32165
* New loplugin:oslendianStephan Bergmann2016-11-224-0/+211
| | | | | | | | | | ...to catch new places where defined'ness of OSL_BIG/LITENDIAN would be checked without osl/endian.h being included; cf. e2f08f9def0869460ad38a1c2adb450778290f6e "connectivity, sc: add missing #include <osl/endian.h>" and 2b14fb3a4f92b928f0a5fc536c6a5f4a6e51a9b8 "cppcanvas, oox: add missing #include <osl/endian.h>". Change-Id: I167c8916a01391b7dacad7325153ccf35d3ba9dc
* can-be-private analysis needs to ignore virtual methodsNoel Grandin2016-11-222-9/+32
| | | | Change-Id: I1e2f28ed550ff9751912f70e3eec511ddc5b75cf
* FieldDecl::getParent fires assert for Objective C @interface membersStephan Bergmann2016-11-211-1/+1
| | | | | | | | | | | (like in vcl/inc/osx/a11ywrapper.h's AquaA11yWrapper), at least on recent Clang trunk, from within the call to cast() in cast<RecordDecl>(getDeclContext()) as the decl context apparently is something other than a RecordDecl. Change-Id: I238bae44d6db0f04bf8f90b0032489e3b4822eee
* new loplugin datamembershadowNoel Grandin2016-11-212-0/+176
| | | | | | | Change-Id: Ib14319848bafd1fe7e0e663c434bbdeef5e98ecf Reviewed-on: https://gerrit.libreoffice.org/30963 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
* extend unusedfields loplugin to find fields that can be privateNoel Grandin2016-11-172-125/+115
| | | | | | and apply the results in xmlscript Change-Id: Ib126f6e1576639abfd171e99d9561be9715ece2f
* update couple of loplugins for move constructorsNoel Grandin2016-11-162-2/+6
| | | | Change-Id: I82140569a3e09225065d721e4aeac5c5fe93bc45
* Reduce noise for irrelevant warnings somewhatStephan Bergmann2016-11-161-6/+6
| | | | | | | | ...other options to avoid such irrelevant warnings can be to move code to an include file and/or to define a dummy main() accessing otherwise unreferenced entities. Change-Id: Ifd44e376b35ef68496f3aba6a3c046d684824000
* new loplugin finalprotectedNoel Grandin2016-11-162-0/+115
| | | | | | | | | look for final classes, and make sure they don't have protected members Change-Id: I1fa810659bba02b61a5160dbfd8e24185ec9abf4 Reviewed-on: https://gerrit.libreoffice.org/30895 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
* New compilerplugins/clang unit testsStephan Bergmann2016-11-151-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...to check that loplugin produces warnings/errors as expected: * Clang has a -verify switch that makes it easy to write test input .cxx files that list in comments all the warnings/errors that are expected, and let Clang check those expectations instead of generating object code. See include/clang/Frontend/VerifyDiagnosticConsumer.h in the Clang source tree for documentation. * Introduce a CompilerTest gbuild class that uses the existing LinkTarget class as much as possible. Checking the input files is implicitly phony, as the compilation step doesn't generate any object files, and the link step does nothing because there is no gb_LinkTarget_set_targettype for CompilerTest. The setup at least works for Clang on Linux (will need adaptions for Clang on Windows; compilers other than Clang are not relevant for now given this is used to check compilerplugins). * Definition of gb_CFLAGS_WERROR in solenv/gbuild/platform/com_GCC_defs.mk needs to be lazy ('=' vs. ':=') so that CompilerTest can override it: The Clang -verify mode wants the input files to specify whether the loplugin diagnostics are warnings or errros, so they consistently need to be errors independent of --enable-werror configuration. * A first (example) test is in compilerplugins/clang/test/salbool.cxx. The corresponding gbuild CompilerTest instance is in solenv/CompilerTest_compilerplugins_clang.mk for now. The reason for that odd split across compilerplugins/ and solenv/ is that there is no compilerplugins/Modules_compilerplugins.mk file, so this setup is the easiest hack for now (to be cleaned up). (Another area that could be improved is that all test files need to be listed explicitly in the CompilerTest_*.mk file, instead of, say, using all .c/.cxx/.m/.mm files in a specified directory.) * The test is run somewhat late during a top-level 'make', after loplugin has already been used in compilation. But it can be run manually (e.g., 'make solenv') when making changes to loplugin during development. Change-Id: I01e12fb84887d264ac03ef2484807458c2075af4
* CXXDestructorDecl is already handledStephan Bergmann2016-11-141-3/+0
| | | | | | ...a few lines up, together with CXXConstructorDecl Change-Id: Id9afd4d3936b2efb92de3c6ab950da78d876a5a8
* ignore constructors for method-can-be-private analysisNoel Grandin2016-11-141-0/+3
| | | | | | doesn't work right now Change-Id: I43693104f4af204a6bd0c22b0f7ef53c1a14bb6e
* tdf#68118: Pass current document frame to SvxScriptSelectorDialogMike Kaganski2016-11-141-1/+1
| | | | | | | | | | | | ... through MacroChooser Without this, current document's macros library is unavailable in "Assign" dialog Change-Id: I83baa3b98858260eab61e8f4fefde3f9979c6d83 Reviewed-on: https://gerrit.libreoffice.org/30600 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
* update vclwidget loplugin to find ref-dropping assigmentNoel Grandin2016-11-111-2/+58
| | | | | | | | | | Look for places where we are accidentally assigning a returned-by-value VclPtr<T> to a T*, which generally ends up in a use-after-free. Change-Id: I4f361eaca88820cdb7aa3b8340212db61580fdd9 Reviewed-on: https://gerrit.libreoffice.org/30749 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
* loplugin:oncevarNoel Grandin2016-11-081-60/+81
| | | | | | | Change-Id: I44fb6858eeff14fcbd9fdfbbb0aabd1433b6a27d Reviewed-on: https://gerrit.libreoffice.org/30668 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
* move loplugin:defaultparams to store/Eike Rathke2016-11-041-0/+0
| | | | | | As per IRC 2016-11-04 12:21 Change-Id: Ic4cc7f67fb31be80a966c652cb30bb859f874a8b
* -Werror=unused-functionStephan Bergmann2016-11-041-37/+0
| | | | Change-Id: I33790862cfe40693921d07182ccf4645c3ef28a3
* update loplugin:unnnecessaryvirtual to handler destructorsNoel Grandin2016-11-043-115/+107
| | | | | | | | | and update modules writerfilter..xmloff with the resulting changes Change-Id: I54d19c22ddb0ff579b32e4934d266c925b19305c Reviewed-on: https://gerrit.libreoffice.org/30530 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
* loplugin:unusedfieldsNoel Grandin2016-11-021-3/+3
| | | | | | | Change-Id: I96634c18ba6600f8f7d5d04a162dcd7e1e312923 Reviewed-on: https://gerrit.libreoffice.org/30474 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
* disable this chunk of loplugin code on clang < 3.8Noel Grandin2016-11-011-8/+4
| | | | | | not worth the spaghetti of making it work across version Change-Id: I0de923b16fb6d58cbad55adc9878ab39bc0c86ae
* loplugin:vclwidgets: Adapt iterator hack to libc++Stephan Bergmann2016-10-311-2/+5
| | | | Change-Id: I1e4fbb06578b2b1d6de4b57507693b014d36cd3a
* No good reason for dbaccess::OCacheSet::updateRow to be pure?Stephan Bergmann2016-10-311-2/+1
| | | | | | | | | | Most of its virtual member functions are (though insertRow is already a curious exception), even though they are defined, so smells like a copy/paste error rather than deliberate design. And appears to have been the only reason why loplugin:unnecessaryoverride filtered out such overriding of pure base functions. Change-Id: Ib2a40af9cd3cd3dbb26c4147f7d01de4e11f5f6e
* fix unnecessaryoverride clang plugin on clang < 3.8Noel Grandin2016-10-311-0/+8
| | | | Change-Id: Id78d694cf7271a6abf94234958ab623cf1cd93a5
* update vclwidgets plugin to check local variablesNoel Grandin2016-10-311-44/+80
| | | | | | | Change-Id: I91f7fc6b8419c0ed82194726eeb4c4657e998f22 Reviewed-on: https://gerrit.libreoffice.org/30428 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
* Rename ServerFont to FreetypeFontKhaled Hosny2016-10-301-1/+1
| | | | | | | | | | | This is what it is actually is, we dropped support for server-side fonts for a long time now. Renamed also a few related classes, but left ServerFontLayout* ones as they will go away soonish. Change-Id: I68a6dad51b6972368b7bf85a0b9c8089cc12740e Reviewed-on: https://gerrit.libreoffice.org/30390 Reviewed-by: Khaled Hosny <khaledhosny@eglug.org> Tested-by: Khaled Hosny <khaledhosny@eglug.org>
* update unnecessaryoverride plugin to find pure forwarding methodsNoel Grandin2016-10-281-7/+86
| | | | | | | | | | | | which can be replaced with using declarations. Is there a more efficient way to code the search? Seems to slow the build down a little. Change-Id: I08cda21fa70dce6572e1acc71bf5e6df36bb951f Reviewed-on: https://gerrit.libreoffice.org/30157 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
* Various loplugin warnings in --enable-telepathyStephan Bergmann2016-10-281-0/+2
| | | | Change-Id: I4c437491466c3029f2a9c93fb630c7b5a8d2ff21
* The badvectorinit plug-in probably can be retiredTor Lillqvist2016-10-211-0/+0
| | | | | | | | Let's hope it only catches false positives now. noelgrandin agrees. Change-Id: Ibd8310c31897aa6835bd6aaf90a49b5cd8f92948
* fix bug in expandablemethods pluginNoel Grandin2016-10-201-9/+13
| | | | | | | where using a std::map instead of a std::set meant that it sometimes miscounted the number of callsites Change-Id: I1e2ebcf44fe006827e66620ae4c9bbc813835414
* Plugin::isInUnoIncludeFile should not cover WORKDIRStephan Bergmann2016-10-192-2/+9
| | | | | | | ...that got in, for no apparent reason, when various, slightly different implementations of isInUnoIncludeFile got consolidated into one. Change-Id: I64a9eb62703d57a0b7b57720ec9f251ffa780691
* accidentally left the expandablemethods loplugin activeNoel Grandin2016-10-191-1/+1
| | | | Change-Id: Ifadab184876163195ea3307ec32d2eed4ee00b92
* loplugin:expandablemethods in UnoControls..vbahelperNoel Grandin2016-10-191-1/+1
| | | | | | | Change-Id: Iec2c5e13119d97c9ca87e083c0f7cb00227e5231 Reviewed-on: https://gerrit.libreoffice.org/29997 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
* -Werror=unused-functionStephan Bergmann2016-10-181-27/+0
| | | | Change-Id: I9e0585460d908024f75a1134bc1cd20d12ea3b4e
* rename inlineablemethods plugin to expandablemethodsNoel Grandin2016-10-182-34/+34
| | | | | | and add support for nested functions Change-Id: I63daee5b3047fa1ed5de0e5ddaf998f8b17bc780
* loplugins: extract some common functionalityNoel Grandin2016-10-1817-35/+24
| | | | Change-Id: If470e1d9b481c9eda0829aa985152baf8fb46d7a
* simplify inlineablemethods lopluginNoel Grandin2016-10-181-10/+1
| | | | Change-Id: I72750a14664aa042da232c35cca3373ce367cfb0
* some cleanups to the unusedmethods lopluginNoel Grandin2016-10-183-77/+47
| | | | | | | | | - publicDefinitionSet is unnecessary, the python post-processor does not need it - remove the traversing of templates, clang will do that for us since we have set the shouldVisitTemplateInstantiations() method Change-Id: I0e96dad0b1cc941fe6c4a2e9227e86d8c3f1d85a
* new loplugin inlineablemethodsNoel Grandin2016-10-182-0/+480
| | | | | | | | | | | | | look for methods that are: (*) non-virtual (*) only called once (*) only called from inside their own class (*) small i.e. < 40 characters which are candidates for just having their code inlined Change-Id: I0e9e8125d140282cdcdd2a77374059b17b2fcd7d
* clang::FileEntry::getName now returns StringRef on Clang masterStephan Bergmann2016-10-161-8/+8
| | | | Change-Id: I94c9676e52a3c60ad70567396a8484e844176c6e
* loplugin:mergeclasses merge TextView with ExtTextViewNoel Grandin2016-10-141-1/+0
| | | | | | | Change-Id: If7e11dd8f6b2cb6dc19c6aa3f7e50e2e88861eac Reviewed-on: https://gerrit.libreoffice.org/29828 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
* loplugin:mergeclasses merge SfxWorkWindow with SfxFrameWorkWin_ImplNoel Grandin2016-10-141-1/+0
| | | | Change-Id: If6cab49904fdb044d85a4fd29f79faa7b52c9959
* loplugin:mergeclasses merge SwTextAttrIterator with SwLanguageIteratorNoel Grandin2016-10-141-1/+0
| | | | Change-Id: Iaa9184f6145625c897fa5b919e9bf0c898b41102
* loplugin:mergeclasses merge SwComboBox with CaptionComboBoxNoel Grandin2016-10-141-1/+0
| | | | Change-Id: Ieef8f00cb1f6f8fb62ad385d1085e8a63161a710
* loplugin:mergeclasses merge SvxListBoxControl with SvxUndoRedoControlNoel Grandin2016-10-141-1/+0
| | | | Change-Id: I5ba9c9d970246d80bb60e27e3b703ec03376c35c
* loplugin:mergeclasses merge svx::ISlotInvalidator with svx::FmTextControlShellNoel Grandin2016-10-141-1/+0
| | | | Change-Id: I828ef52bc093d3fa2946f813a2dd09ac6b34e94c
* loplugin:mergeclasse merge ScCbWarningBox with ScReplaceWarnBoNoel Grandin2016-10-141-1/+0
| | | | Change-Id: I7b55b036c1992b88b01b51053a3560e9f97986c9
* loplugin:mergeclasses ImplEESdrWriter with ImplEscherExSdrNoel Grandin2016-10-131-1/+0
| | | | Change-Id: Iea2241d9fc44b92e18101b3f367a643f03729183
* loplugin:unnecessaryoverrideNoel Grandin2016-10-131-45/+79
| | | | | | | Change-Id: I08c55a3023ec2e8990098eeb60e91cd18556e7ae Reviewed-on: https://gerrit.libreoffice.org/29656 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>