- Katılım
- 25 Ara 2024
- Konular
- 5
- Mesajlar
- 155
- Online süresi
- 26g 69234s
- Reaksiyon Skoru
- 64
- Altın Konu
- 0
- Başarım Puanı
- 52
- TM Yaşı
- 1 Yıl 3 Ay 24 Gün
- MmoLira
- 3,023
- DevLira
- 9
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. 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
- 947
- Online süresi
- 3ay 24g
- Reaksiyon Skoru
- 283
- Altın Konu
- 0
- Başarım Puanı
- 161
- Yaş
- 28
- TM Yaşı
- 7 Yıl 11 Ay 11 Gün
- MmoLira
- 11,460
- DevLira
- 30
Paylaşımınız İçin Teşekkürler.
- Katılım
- 15 May 2013
- Konular
- 972
- Mesajlar
- 6,651
- Online süresi
- 2ay 11g
- Reaksiyon Skoru
- 5,350
- Altın Konu
- 314
- Başarım Puanı
- 319
- TM Yaşı
- 12 Yıl 11 Ay 12 Gün
- MmoLira
- 22,215
- DevLira
- 15
paylaşım için teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)
Benzer konular
- Cevaplar
- 13
- Görüntüleme
- 1K
- Cevaplar
- 8
- Görüntüleme
- 659
- Cevaplar
- 2
- Görüntüleme
- 254
- Cevaplar
- 19
- Görüntüleme
- 2K
















