- Katılım
- 25 Ara 2024
- Konular
- 5
- Mesajlar
- 164
- Reaksiyon Skoru
- 64
- Altın Konu
- 0
- Başarım Puanı
- 52
- MmoLira
- 3,338
- DevLira
- 9
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ 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()
- Katılım
- 15 May 2018
- Konular
- 96
- Mesajlar
- 948
- Çözüm
- 18
- Online süresi
- 3mo 25d
- Reaksiyon Skoru
- 284
- Altın Konu
- 0
- TM Yaşı
- 8 Yıl 22 Gün
- Başarım Puanı
- 166
- Yaş
- 28
- MmoLira
- 11,580
- DevLira
- 30
Paylaşımınız İçin Teşekkürler.
- Katılım
- 15 May 2013
- Konular
- 1,208
- Mesajlar
- 7,324
- Çözüm
- 6
- Online süresi
- 2mo 16d
- Reaksiyon Skoru
- 5,959
- Altın Konu
- 410
- Başarım Puanı
- 349
- MmoLira
- 46,086
- DevLira
- 3
paylaşım için teşekkürler.
Ş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
- 690
- Cevaplar
- 2
- Görüntüleme
- 269
- Cevaplar
- 19
- Görüntüleme
- 2K












