• Değerli Üyelerimiz ve Forum Kullanıcılarımız,

    Ağ altyapımızın performansını, kararlılığını ve hizmet sürekliliğini artırmak amacıyla Salı gününü Çarşamba gününe bağlayan gece planlı network bakım çalışması gerçekleştirilecektir.

    📅 Bakım Zamanı 14/10/2026
    ⏰ Saat Aralığı 02:00 – 05:00 (TSİ)
    🛠️ Bakım Türü Network / Ağ Altyapısı

    📌 Önemli Bilgilendirme:

    • Bakım sırasında ağ üzerinde kısa süreli bağlantı kesintileri, paket kayıpları veya erişim aksaklıkları yaşanabilir.
    • İşlemlerin tamamlanmasıyla birlikte hizmetlerimiz otomatik olarak normale dönecektir.
    Anlayışınız için teşekkür ederiz. — www.metin2games.com.tr Yönetimi

Python – Kullanılmayan Import Tespit Scripti

Kayıtlı
8 Ay 11 Gün
Katılım
2 Şub 2026
Konular
224
Mesajlar
369
Tepkime puanı
71
Online süresi
1d 11h 37m
Puan
53
Konum
İstanbul

Python’un kendi kod analiz mekanizmasını kullanarak dosyaları inceler ve 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()
 
Moderatör tarafında düzenlendi:
Geri
Üst