summaryrefslogtreecommitdiff
path: root/compilerplugins
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2016-08-08 09:57:25 +0200
committerNoel Grandin <noelgrandin@gmail.com>2016-08-08 13:06:58 +0000
commit602647c2417e0e19e44f9c35a49fbb88ff8ac261 (patch)
treefb56a519ec12c3884a70862272c554c89d3b4b75 /compilerplugins
parent8f25e553b91f5ed3544c580a450658cc76ffed56 (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-xcompilerplugins/clang/store/unnecessaryvirtual.py28
-rw-r--r--compilerplugins/clang/unnecessaryvirtual.cxx (renamed from compilerplugins/clang/store/unnecessaryvirtual.cxx)4
-rwxr-xr-xcompilerplugins/clang/unnecessaryvirtual.py37
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")
+