summaryrefslogtreecommitdiff
path: root/bin/find-unusedheaders.pl
blob: def1bd45abf974b8e4230bac405c0bfe08a46a97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/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;
    }
  }
}