fix: support root-level matching for '**/' globs

- generate an additional regex to match root-level files alongside '**/' patterns.
- ensure files in the repo root are correctly excluded from analysis.
This commit is contained in:
isExample
2025-06-26 15:26:12 +09:00
parent 2d1afc634e
commit 87a245bf9c
2 changed files with 12 additions and 3 deletions

View File

@ -17,14 +17,14 @@ def filter_ignored(files, platform = 'github'):
glob_setting = get_settings().ignore.glob
if isinstance(glob_setting, str): # --ignore.glob=[.*utils.py], --ignore.glob=.*utils.py
glob_setting = glob_setting.strip('[]').split(",")
patterns += [fnmatch.translate(glob) for glob in glob_setting]
patterns += translate_globs_to_regexes(glob_setting)
code_generators = get_settings().config.get('ignore_language_framework', [])
for cg in code_generators:
glob_patterns = get_settings().generated_code.get(cg, [])
if isinstance(glob_patterns, str):
glob_patterns = [glob_patterns]
patterns += [fnmatch.translate(glob) for glob in glob_patterns]
patterns += translate_globs_to_regexes(glob_patterns)
# compile all valid patterns
compiled_patterns = []
@ -73,3 +73,11 @@ def filter_ignored(files, platform = 'github'):
print(f"Could not filter file list: {e}")
return files
def translate_globs_to_regexes(globs: list):
regexes = []
for pattern in globs:
regexes.append(fnmatch.translate(pattern))
if pattern.startswith("**/"): # cover root-level files
regexes.append(fnmatch.translate(pattern[3:]))
return regexes