Testing removal of ifdef or configure checks: Difference between revisions
From SambaWiki
(show hints on using it) |
|||
Line 8: | Line 8: | ||
[[File:Gcc-E.py.txt]] is a Python script that wraps gcc -E to attempt to solve this dilemma, so as to provide a result that can be reasoned with via tools like [https://www.samba.org/ftp/paulus/ dirdiff] |
[[File:Gcc-E.py.txt]] is a Python script that wraps gcc -E to attempt to solve this dilemma, so as to provide a result that can be reasoned with via tools like [https://www.samba.org/ftp/paulus/ dirdiff] |
||
===Getting the results=== |
|||
git checkout origin/master |
|||
git clean -x -f -d |
|||
CC="gcc -E" ./configure.developer && make -j |
|||
mv bin /tmp/master-bin |
|||
git checkout newbranch |
|||
git clean -x -f -d |
|||
CC="gcc -E" ./configure.developer && make -j |
|||
===Reading the results=== |
|||
dirdiff /tmp/master-bin bin |
|||
or |
|||
diff -ur --ignore-matching-lines="^#" /tmp/master-bin/ bin> /tmp/diff |
Revision as of 02:30, 27 April 2019
#ifdef removal is risky
Large-scale removal of "unused" ifdef or the configure checks that produce #defines is an important, but risky task.
It is difficult (and time consuming) to prove that the code is unused and that there is no change to the compiled output.
A script to help
File:Gcc-E.py.txt is a Python script that wraps gcc -E to attempt to solve this dilemma, so as to provide a result that can be reasoned with via tools like dirdiff
Getting the results
git checkout origin/master git clean -x -f -d CC="gcc -E" ./configure.developer && make -j mv bin /tmp/master-bin git checkout newbranch git clean -x -f -d CC="gcc -E" ./configure.developer && make -j
Reading the results
dirdiff /tmp/master-bin bin
or
diff -ur --ignore-matching-lines="^#" /tmp/master-bin/ bin> /tmp/diff