diff options
author | Noel Grandin <noel@peralex.com> | 2016-08-08 09:57:25 +0200 |
---|---|---|
committer | Noel Grandin <noelgrandin@gmail.com> | 2016-08-08 13:06:58 +0000 |
commit | 602647c2417e0e19e44f9c35a49fbb88ff8ac261 (patch) | |
tree | fb56a519ec12c3884a70862272c554c89d3b4b75 /compilerplugins | |
parent | 8f25e553b91f5ed3544c580a450658cc76ffed56 (diff) |
loplugin:unnecessaryvirtual
Change-Id: If25d9307efda5f57b0f80a0cf5c2c5cab6a752d6
Reviewed-on: https://gerrit.libreoffice.org/27981
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Diffstat (limited to 'compilerplugins')
-rwxr-xr-x | compilerplugins/clang/store/unnecessaryvirtual.py | 28 | ||||
-rw-r--r-- | compilerplugins/clang/unnecessaryvirtual.cxx (renamed from compilerplugins/clang/store/unnecessaryvirtual.cxx) | 4 | ||||
-rwxr-xr-x | compilerplugins/clang/unnecessaryvirtual.py | 37 |
3 files changed, 39 insertions, 30 deletions
diff --git a/compilerplugins/clang/store/unnecessaryvirtual.py b/compilerplugins/clang/store/unnecessaryvirtual.py deleted file mode 100755 index e05f16c4d84a..000000000000 --- a/compilerplugins/clang/store/unnecessaryvirtual.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/python - -import sys -import io - -definitionSet = set() -overridingSet = set() - - -with io.open(sys.argv[1], "rb", buffering=1024*1024) as txt: - for line in txt: - - if line.startswith("definition:\t"): - idx1 = line.find("\t") - clazzName = line[idx1+1 : len(line)-1] - definitionSet.add(clazzName) - - elif line.startswith("overriding:\t"): - idx1 = line.find("\t") - clazzName = line[idx1+1 : len(line)-1] - overridingSet.add(clazzName) - -for clazz in sorted(definitionSet - overridingSet): - print clazz - -# add an empty line at the end to make it easier for the removevirtuals plugin to mmap() the output file -print - diff --git a/compilerplugins/clang/store/unnecessaryvirtual.cxx b/compilerplugins/clang/unnecessaryvirtual.cxx index 463fc233e84e..2964748a771c 100644 --- a/compilerplugins/clang/store/unnecessaryvirtual.cxx +++ b/compilerplugins/clang/unnecessaryvirtual.cxx @@ -22,7 +22,7 @@ Then we will post-process the 2 lists and find the set of virtual methods which The process goes something like this: $ make check $ make FORCE_COMPILE_ALL=1 COMPILER_PLUGIN_TOOL='unnecessaryvirtual' check - $ ./compilerplugins/clang/unnecessaryvirtual.py unnecessaryvirtual.log > result.txt + $ ./compilerplugins/clang/unnecessaryvirtual.py $ for dir in *; do make FORCE_COMPILE_ALL=1 UPDATE_FILES=$dir COMPILER_PLUGIN_TOOL='removevirtuals' $dir; done Note that the actual process may involve a fair amount of undoing, hand editing, and general messing around @@ -56,7 +56,7 @@ public: for (const std::string & s : overridingSet) output += "overriding:\t" + s + "\n"; ofstream myfile; - myfile.open( SRCDIR "/unnecessaryvirtual.log", ios::app | ios::out); + myfile.open( SRCDIR "/loplugin.unnecessaryvirtual.log", ios::app | ios::out); myfile << output; myfile.close(); } diff --git a/compilerplugins/clang/unnecessaryvirtual.py b/compilerplugins/clang/unnecessaryvirtual.py new file mode 100755 index 000000000000..cd5613771244 --- /dev/null +++ b/compilerplugins/clang/unnecessaryvirtual.py @@ -0,0 +1,37 @@ +#!/usr/bin/python + +import sys +import io + +definitionSet = set() +overridingSet = set() + + +with io.open("loplugin.unnecessaryvirtual.log", "rb", buffering=1024*1024) as txt: + for line in txt: + + if line.startswith("definition:\t"): + idx1 = line.find("\t") + clazzName = line[idx1+1 : len(line)-1] + definitionSet.add(clazzName) + + elif line.startswith("overriding:\t"): + idx1 = line.find("\t") + clazzName = line[idx1+1 : len(line)-1] + overridingSet.add(clazzName) + +with open("loplugin.unnecessaryvirtual.report", "wt") as f: + for clazz in sorted(definitionSet - overridingSet): + # external code + if clazz.startswith("std::"): continue + if clazz.startswith("icu_"): continue + if clazz.startswith("__cxx"): continue + # windows-specific stuff + if clazz.startswith("canvas::"): continue + if clazz.startswith("psp::PrinterInfoManager"): continue + # some test magic + if clazz.startswith("apitest::"): continue + f.write(clazz + "\n") + # add an empty line at the end to make it easier for the removevirtuals plugin to mmap() the output file + f.write("\n") + |