Ported bin/find-unusedheaders.pl to Python
Also fixed bug which prevented .cxx and .hxx files listing Change-Id: I67adc7c52ab5f2f1222e0756cd0087c8d9be102f Reviewed-on: https://gerrit.libreoffice.org/38640 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
This commit is contained in:
parent
379196bf95
commit
63a7df3c07
3 changed files with 49 additions and 50 deletions
|
@ -399,7 +399,7 @@ findunusedcode:
|
|||
@$(SRCDIR)/bin/findunusedcode $(SRCDIR) $(MAKE)
|
||||
|
||||
findunusedheaders:
|
||||
$(SRCDIR)/bin/find-unusedheaders.pl
|
||||
$(SRCDIR)/bin/find-unusedheaders.py
|
||||
|
||||
symbols:
|
||||
rm -fr $(WORKDIR)/symbols/
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
#!/usr/bin/env perl
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
#
|
||||
use strict;
|
||||
use warnings;
|
||||
use File::Find qw(finddepth);
|
||||
use File::Basename;
|
||||
|
||||
# Find dirs in:
|
||||
# workdir/Dep/CxxObject/
|
||||
# workdir/Dep/CObject
|
||||
#
|
||||
# Concat these files and compare them with the output of
|
||||
# `git ls-tree HEAD -r --name-only` and report files in the git ls-tree that aren't in the first.
|
||||
|
||||
my @files;
|
||||
my $tmp;
|
||||
my %data = ();
|
||||
|
||||
# define a wanted function
|
||||
sub wanted {
|
||||
return if($_ eq '.' || $_ eq '..' || -d $_);
|
||||
$tmp = basename($File::Find::name);
|
||||
# remove file extension ( .o )
|
||||
$tmp =~ s/\.[^.]*$//;
|
||||
$data{$tmp} = $File::Find::name;
|
||||
}
|
||||
|
||||
finddepth(\&wanted, 'workdir/Dep/CxxObject');
|
||||
finddepth(\&wanted, 'workdir/Dep/CObject');
|
||||
|
||||
my @gitfiles = `git ls-tree HEAD -r --name-only`;
|
||||
|
||||
# loop over found gitfiles
|
||||
foreach my $file (@gitfiles){
|
||||
if($file =~ /\.[hxx|h|c|cxx]$/){
|
||||
$tmp = basename($file);
|
||||
$tmp =~ s/\.[^.]*$//;
|
||||
chomp($tmp);
|
||||
if(!exists($data{$tmp})){
|
||||
print $file;
|
||||
}
|
||||
}
|
||||
}
|
48
bin/find-unusedheaders.py
Executable file
48
bin/find-unusedheaders.py
Executable file
|
@ -0,0 +1,48 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
"""
|
||||
Find dirs in:
|
||||
workdir/Dep/CObject
|
||||
workdir/Dep/CxxObject
|
||||
|
||||
Concat these files and compare them with the output of
|
||||
`git ls-tree HEAD -r --name-only` and report files in the git ls-tree that aren't in the first.
|
||||
"""
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
|
||||
def get_files_dict_recursively(directory):
|
||||
data = {}
|
||||
for root, _, files in os.walk(directory, topdown=False):
|
||||
for f in files:
|
||||
basename = os.path.splitext(f)[0]
|
||||
data[basename] = os.path.join(root, f)
|
||||
return data
|
||||
|
||||
|
||||
def main():
|
||||
data = {}
|
||||
for d in ('workdir/Dep/CObject', 'workdir/Dep/CxxObject'):
|
||||
tmp = get_files_dict_recursively(d)
|
||||
data.update(tmp)
|
||||
|
||||
gitfiles = subprocess.check_output(['git', 'ls-tree', 'HEAD', '-r', '--name-only']).decode('utf-8').split('\n')
|
||||
|
||||
for f in gitfiles:
|
||||
ext = os.path.splitext(f)[1]
|
||||
if ext[1:] in ('c', 'cxx', 'h', 'hxx'):
|
||||
tmp = os.path.basename(f)
|
||||
tmp = os.path.splitext(tmp)[0]
|
||||
if tmp not in data:
|
||||
print(f)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in a new issue