File: find-unusedheaders.py

package info (click to toggle)
libreoffice 1:6.1.5-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,699,584 kB
  • sloc: cpp: 4,078,558; xml: 324,485; java: 281,935; python: 48,236; ansic: 36,476; perl: 32,383; sh: 13,671; yacc: 10,820; makefile: 9,085; cs: 6,600; lex: 2,184; objc: 1,904; awk: 978; pascal: 949; asm: 866; php: 79; csh: 20; sed: 5
file content (48 lines) | stat: -rwxr-xr-x 1,339 bytes parent folder | download | duplicates (7)
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
#!/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()