Files
medical-mall/scan_self_closing.py
2026-02-26 08:46:33 +08:00

52 lines
2.2 KiB
Python

import os
import re
def scan_self_closing_tags(root_dir):
print(f"Scanning {root_dir} for suspicious self-closing tags...")
# Tags that are safe to self-close or are void elements
safe_tags = {
'image', 'img', 'input', 'br', 'hr', 'meta', 'link', 'col', 'base',
'area', 'embed', 'param', 'source', 'track', 'wbr',
'slot', 'template' # Maybe
}
suspicious_files = []
for subdir, dirs, files in os.walk(root_dir):
if 'node_modules' in subdir or 'unpackage' in subdir:
continue
for file in files:
if file.endswith('.uvue') or file.endswith('.vue'):
file_path = os.path.join(subdir, file)
try:
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
# Regex to find self-closing tags: <TagName ... />
# matches <TagName (anything but >) />
matches = re.finditer(r'<([a-zA-Z0-9-]+)([^>]*)/>', content)
found_issues = []
for match in matches:
tag_name = match.group(1)
if tag_name not in safe_tags:
# Start checking if it's a known component that might be problematic
# For now, report everything that isn't standard void
context = content[max(0, match.start()-20):min(len(content), match.end()+20)]
found_issues.append((tag_name, context.replace('\n', '\\n')))
if found_issues:
print(f"\nExample issues in {file_path}:")
for tag, ctx in found_issues:
print(f" Tag: <{tag} ... /> | Context: {ctx}")
suspicious_files.append(file_path)
except Exception as e:
print(f"Error reading {file_path}: {e}")
return suspicious_files
scan_self_closing_tags(r'.')