HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!
Gereksiz Import Tespit
Python projelerinde kullanılmayan importları tespit etmek için hazırladığım küçük bir analiz scriptini paylaşıyorum.
Python’un kendi kod analiz yapısını kullanarak dosyaları inceler. Kullanılmayan importları satır numarasıyla birlikte raporlar.
Python projelerinde kullanılmayan importları tespit etmek için hazırladığım küçük bir analiz scriptini paylaşıyorum.
Python’un kendi kod analiz yapısını kullanarak dosyaları inceler. Kullanılmayan importları satır numarasıyla birlikte raporlar.
Python:
import os
import ast
class ImportAnalyzer(ast.NodeVisitor):
def __init__(self):
self.imports = {}
self.used_names = set()
def visit_Import(self, node):
for alias in node.names:
name = alias.asname or alias.name.split('.')[0]
self.imports[name] = node.lineno
self.generic_visit(node)
def visit_ImportFrom(self, node):
if node.names[0].name == "*":
return
for alias in node.names:
name = alias.asname or alias.name
self.imports[name] = node.lineno
self.generic_visit(node)
def visit_Name(self, node):
self.used_names.add(node.id)
self.generic_visit(node)
def visit_Attribute(self, node):
if isinstance(node.value, ast.Name):
self.used_names.add(node.value.id)
self.generic_visit(node)
def safe_read(path):
for enc in ("utf-8", "cp1254", "latin-1"):
try:
with open(path, "r", encoding=enc) as f:
return f.read()
except UnicodeDecodeError:
continue
# En son çare
with open(path, "r", errors="ignore") as f:
return f.read()
def find_unused_imports(py_file):
try:
source = safe_read(py_file)
tree = ast.parse(source, filename=py_file)
except (SyntaxError, ValueError):
return None
analyzer = ImportAnalyzer()
analyzer.visit(tree)
return {
name: line
for name, line in analyzer.imports.items()
if name not in analyzer.used_names
}
def scan_folder(root_folder):
results = {}
for root, _, files in os.walk(root_folder):
for file in files:
if file.endswith(".py"):
path = os.path.join(root, file)
unused = find_unused_imports(path)
if unused:
results[path] = unused
return results
if __name__ == "__main__":
folder = input("Taranacak klasör yolu: ").strip()
report = scan_folder(folder)
if not report:
print("🎉 Gereksiz import bulunamadı.")
else:
print("\n🚨 GEREKSİZ IMPORTLAR:\n")
for file, imports in report.items():
print(f"📄 {file}")
for name, line in imports.items():
print(f" - {name} (satır {line})")
print()
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 13
- Görüntüleme
- 1K
- Cevaplar
- 8
- Görüntüleme
- 696
- Cevaplar
- 2
- Görüntüleme
- 271
- Cevaplar
- 19
- Görüntüleme
- 2K
