Cannn6161 1
Cannn6161
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Mt2Hizmet 1
Mt2Hizmet
melankolıa18 1
melankolıa18
romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Python – Gereksiz Import Tespit Scripti

5.00 yıldız(lar) 1 Değerlendirme Değerlendirenler

Mt2Hizmet

Level 3
TM Üye
Üye
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
Ticaret - 100%
1   0   0

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:
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()
 
Paylaşımınız İçin Teşekkürler.
 
PAYLAŞIM İÇİN TEŞEKKÜRLER,ELİNE SAĞLIK.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst