長年システムを運用していると、libs.versions.toml
に記載があるが存在しないシステムが発生することがある。これを検出したい。
import toml
import os
import re
from collections import defaultdict
def scan_files(root_dir):
usage_counts = defaultdict(int)
for subdir, _, files in os.walk(root_dir):
for file in files:
if file.endswith('.gradle.kts'):
with open(os.path.join(subdir, file), 'r') as f:
content = f.read()
for match in re.finditer(r'libs\.([a-zA-Z0-9._-]+)', content):
library = match.group(1).replace('.', '-')
usage_counts[library] += 1
return usage_counts
def main():
# TOML ファイルを読み込む
with open('gradle/libraries.versions.toml', 'r') as f:
toml_data = toml.load(f)
libraries = toml_data['libraries']
usage_counts = scan_files('.')
# すべてのライブラリに対して使用状況をチェックする
for library in libraries.keys():
usage_count = usage_counts[library]
unused_indicator = ' (*)' if usage_count == 0 else ''
print(f'{usage_count} {library}{unused_indicator}')
if __name__ == "__main__":
main()