- Katılım
- 22 Eki 2024
- Konular
- 27
- Mesajlar
- 268
- Online süresi
- 1mo 3d
- Reaksiyon Skoru
- 166
- Altın Konu
- 0
- Başarım Puanı
- 74
- MmoLira
- 2,281
- DevLira
- 42
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!
çalışma mantığı service.h dosyasında define olup ama projede kodu olmayan dosyaları bulur server dosyasının içindeki ana dizine makefilenin bulunduğu ana dizine koyacaksınız dosyayı python 3.13 ile çalışıyor benim ihtiyacım olduğu için chatgpt ye hazırlatmiştim umarım işinize yarar.
BUDA TAM TERSİ İÇİN PROJE İÇİNDE OLAN KOD AMA SERVİCE.H TA OLMAYAN DEFİNE İÇİN.
Python:
import os
import re
def extract_defines(service_file_path):
"""
Verilen service.h dosyasından '#define' ile başlayan makroları ayıklar.
Makro isimlerini bir küme (set) içerisinde döndürür.
"""
defines = set()
define_pattern = re.compile(r'^\s*#define\s+(\w+)\b')
try:
# Dosyayı UTF-8 ile açıyoruz, hatalı karakterleri atlamak için errors="ignore" kullanılıyor.
with open(service_file_path, "r", encoding="utf-8", errors="ignore") as f:
for line in f:
match = define_pattern.match(line)
if match:
defines.add(match.group(1))
except Exception as e:
print(f"{service_file_path} dosyası okunurken hata oluştu: {e}")
return defines
def main():
# Betiğin bulunduğu dizini temel alıyoruz.
script_dir = os.path.dirname(os.path.abspath(__file__))
root_dir = script_dir # Ana dizin olarak betiğin bulunduğu dizini kullanıyoruz.
# service.h dosyasının yolu: 'common' klasöründe olmalıdır.
service_file_path = os.path.join(root_dir, "common", "service.h")
if not os.path.isfile(service_file_path):
print(f"Hata: '{service_file_path}' dosyası bulunamadı!")
input("Çıkmak için Enter'a basın...")
return
print("service.h dosyasından makrolar alınıyor...")
defines = extract_defines(service_file_path)
if not defines:
print("Hiç makro bulunamadı.")
input("Çıkmak için Enter'a basın...")
return
print("Alınan makrolar:")
for d in sorted(defines):
print(" ", d)
# Projedeki dosyaları tarayarak makro kullanımını kontrol ediyoruz.
used_defines = set()
valid_extensions = ('.cpp', '.h', '.hpp', '.c', '.cc', '.cxx')
print("\nProjedeki dosyalar taranıyor...")
for dirpath, dirnames, filenames in os.walk(root_dir):
for filename in filenames:
current_file = os.path.join(dirpath, filename)
# service.h dosyasını taramaya almıyoruz.
if os.path.abspath(current_file) == os.path.abspath(service_file_path):
continue
if not filename.endswith(valid_extensions):
continue
try:
with open(current_file, "r", encoding="utf-8", errors="ignore") as f:
content = f.read()
for macro in defines:
if macro in used_defines:
continue
pattern = r'\b' + re.escape(macro) + r'\b'
if re.search(pattern, content):
used_defines.add(macro)
except Exception as e:
print(f"{current_file} dosyası okunurken hata oluştu: {e}")
unused_defines = defines - used_defines
print("\nKullanılmayan makrolar:")
if unused_defines:
for d in sorted(unused_defines):
print(" ", d)
else:
print("Tüm makrolar başka dosyalarda kullanılmış!")
output_file = os.path.join(root_dir, "unused_defines.txt")
try:
with open(output_file, "w", encoding="utf-8") as f:
for macro in sorted(unused_defines):
f.write(macro + "\n")
print(f"\nKullanılmayan makrolar '{output_file}' dosyasına yazıldı.")
except Exception as e:
print(f"Sonuç dosyası yazılırken hata oluştu: {e}")
input("\nÇıkmak için Enter'a basın...")
if __name__ == "__main__":
main()
BUDA TAM TERSİ İÇİN PROJE İÇİNDE OLAN KOD AMA SERVİCE.H TA OLMAYAN DEFİNE İÇİN.
Python:
import os
import re
def extract_macros_from_file(file_path):
"""
Verilen dosyadan, preprocessor ile ilgili makro ifadelerini ayıklar.
Bu, hem tanımlamaları (#define) hem de koşullu ifadeleri (#ifdef, #ifndef, defined(...)) içerir.
Makro isimlerini bir set (küme) olarak döndürür.
"""
macros = set()
# #define satırlarını yakalayan regex
define_pattern = re.compile(r'^\s*#\s*define\s+(\w+)\b')
# #ifdef ve #ifndef satırlarını yakalayan regex
ifdef_pattern = re.compile(r'^\s*#\s*(ifdef|ifndef)\s+(\w+)\b')
# Satır içinde defined(...) ifadelerini yakalamak için regex
defined_pattern = re.compile(r'\bdefined\s*\(\s*(\w+)\s*\)')
try:
with open(file_path, "r", encoding="utf-8", errors="ignore") as f:
for line in f:
# #define kullanımı
m = define_pattern.match(line)
if m:
macros.add(m.group(1))
# #ifdef veya #ifndef kullanımı
m2 = ifdef_pattern.match(line)
if m2:
macros.add(m2.group(2))
# defined(...) kullanımını satır içinde ara
found = defined_pattern.findall(line)
for macro in found:
macros.add(macro)
except Exception as e:
print(f"{file_path} dosyası okunurken hata oluştu: {e}")
return macros
def main():
# Betiğin bulunduğu dizini temel alıyoruz.
script_dir = os.path.dirname(os.path.abspath(__file__))
root_dir = script_dir # Projenin ana dizini olarak betiğin bulunduğu dizin kullanılıyor.
# service.h dosyasının yolu: ana dizinde "common" klasöründe bulunmalı.
service_file_path = os.path.join(root_dir, "common", "service.h")
if not os.path.isfile(service_file_path):
print(f"Hata: '{service_file_path}' dosyası bulunamadı!")
input("Çıkmak için Enter'a basın...")
return
print("service.h dosyasından makrolar alınıyor...")
service_macros = extract_macros_from_file(service_file_path)
print("\nservice.h dosyasında bulunan makrolar:")
if service_macros:
for m in sorted(service_macros):
print(" ", m)
else:
print(" Hiç makro bulunamadı!")
# Projedeki (service.h hariç) dosyalarda kullanılan makro isimlerini toplayalım.
project_macros = set()
valid_extensions = ('.cpp', '.h', '.hpp', '.c', '.cc', '.cxx')
print("\nProjedeki dosyalar taranıyor ve makrolar toplanıyor...")
for dirpath, dirnames, filenames in os.walk(root_dir):
for filename in filenames:
current_file = os.path.join(dirpath, filename)
# service.h dosyasını taramaya almıyoruz.
if os.path.abspath(current_file) == os.path.abspath(service_file_path):
continue
if not filename.endswith(valid_extensions):
continue
file_macros = extract_macros_from_file(current_file)
if file_macros:
project_macros.update(file_macros)
# Artık proje içinde bulunan makro isimlerinden,
# service.h dosyasında bulunanları çıkarıyoruz.
extra_macros = project_macros - service_macros
print("\nProje içinde tanımlı fakat service.h dosyasında bulunmayan makrolar:")
if extra_macros:
for m in sorted(extra_macros):
print(" ", m)
else:
print(" Tüm makrolar service.h dosyasında mevcut!")
# Sonuçları extra_defines.txt dosyasına yazıyoruz.
output_file = os.path.join(root_dir, "extra_defines.txt")
try:
with open(output_file, "w", encoding="utf-8") as f:
for macro in sorted(extra_macros):
f.write(macro + "\n")
print(f"\nMakrolar '{output_file}' dosyasına yazıldı.")
except Exception as e:
print(f"Sonuç dosyası yazılırken hata oluştu: {e}")
input("\nÇıkmak için Enter'a basın...")
if __name__ == "__main__":
main()
Son düzenleme:
- Katılım
- 17 Nis 2013
- Konular
- 74
- Mesajlar
- 888
- Online süresi
- 1mo 22d
- Reaksiyon Skoru
- 595
- Altın Konu
- 0
- Başarım Puanı
- 211
- Yaş
- 27
- MmoLira
- 11,742
- DevLira
- 150
Merhabalar,
Paylaşımınız için teşekkür ederim.
İyi forumlar
Paylaşımınız için teşekkür ederim.
İyi forumlar
- Katılım
- 26 Mar 2024
- Konular
- 1,281
- Mesajlar
- 4,833
- Çözüm
- 91
- Online süresi
- 3mo 26d
- Reaksiyon Skoru
- 4,056
- Altın Konu
- 566
- Başarım Puanı
- 274
- Yaş
- 29
- MmoLira
- 136,792
- DevLira
- 450
Paylaşım için teşekkürler.
- Katılım
- 21 Eyl 2010
- Konular
- 142
- Mesajlar
- 1,589
- Çözüm
- 47
- Online süresi
- 2mo 8d
- Reaksiyon Skoru
- 628
- Altın Konu
- 34
- Başarım Puanı
- 248
- MmoLira
- 28,050
- DevLira
- 102
çalışma mantığı service.h dosyasında define olup ama projede kodu olmayan dosyaları bulur server dosyasının içindeki ana dizine makefilenin bulunduğu ana dizine koyacaksınız dosyayı python 3.13 ile çalışıyor benim ihtiyacım olduğu için chatgpt ye hazırlatmiştim umarım işinize yarar.
Python:import os import re def extract_defines(service_file_path): """ Verilen service.h dosyasından '#define' ile başlayan makroları ayıklar. Makro isimlerini bir küme (set) içerisinde döndürür. """ defines = set() define_pattern = re.compile(r'^\s*#define\s+(\w+)\b') try: # Dosyayı UTF-8 ile açıyoruz, hatalı karakterleri atlamak için errors="ignore" kullanılıyor. with open(service_file_path, "r", encoding="utf-8", errors="ignore") as f: for line in f: match = define_pattern.match(line) if match: defines.add(match.group(1)) except Exception as e: print(f"{service_file_path} dosyası okunurken hata oluştu: {e}") return defines def main(): # Betiğin bulunduğu dizini temel alıyoruz. script_dir = os.path.dirname(os.path.abspath(__file__)) root_dir = script_dir # Ana dizin olarak betiğin bulunduğu dizini kullanıyoruz. # service.h dosyasının yolu: 'common' klasöründe olmalıdır. service_file_path = os.path.join(root_dir, "common", "service.h") if not os.path.isfile(service_file_path): print(f"Hata: '{service_file_path}' dosyası bulunamadı!") input("Çıkmak için Enter'a basın...") return print("service.h dosyasından makrolar alınıyor...") defines = extract_defines(service_file_path) if not defines: print("Hiç makro bulunamadı.") input("Çıkmak için Enter'a basın...") return print("Alınan makrolar:") for d in sorted(defines): print(" ", d) # Projedeki dosyaları tarayarak makro kullanımını kontrol ediyoruz. used_defines = set() valid_extensions = ('.cpp', '.h', '.hpp', '.c', '.cc', '.cxx') print("\nProjedeki dosyalar taranıyor...") for dirpath, dirnames, filenames in os.walk(root_dir): for filename in filenames: current_file = os.path.join(dirpath, filename) # service.h dosyasını taramaya almıyoruz. if os.path.abspath(current_file) == os.path.abspath(service_file_path): continue if not filename.endswith(valid_extensions): continue try: with open(current_file, "r", encoding="utf-8", errors="ignore") as f: content = f.read() for macro in defines: if macro in used_defines: continue pattern = r'\b' + re.escape(macro) + r'\b' if re.search(pattern, content): used_defines.add(macro) except Exception as e: print(f"{current_file} dosyası okunurken hata oluştu: {e}") unused_defines = defines - used_defines print("\nKullanılmayan makrolar:") if unused_defines: for d in sorted(unused_defines): print(" ", d) else: print("Tüm makrolar başka dosyalarda kullanılmış!") output_file = os.path.join(root_dir, "unused_defines.txt") try: with open(output_file, "w", encoding="utf-8") as f: for macro in sorted(unused_defines): f.write(macro + "\n") print(f"\nKullanılmayan makrolar '{output_file}' dosyasına yazıldı.") except Exception as e: print(f"Sonuç dosyası yazılırken hata oluştu: {e}") input("\nÇıkmak için Enter'a basın...") if __name__ == "__main__": main()
BUDA TAM TERSİ İÇİN PROJE İÇİNDE OLAN KOD AMA SERVİCE.H TA OLMAYAN DEFİNE İÇİN.
Python:import os import re def extract_macros_from_file(file_path): """ Verilen dosyadan, preprocessor ile ilgili makro ifadelerini ayıklar. Bu, hem tanımlamaları (#define) hem de koşullu ifadeleri (#ifdef, #ifndef, defined(...)) içerir. Makro isimlerini bir set (küme) olarak döndürür. """ macros = set() # #define satırlarını yakalayan regex define_pattern = re.compile(r'^\s*#\s*define\s+(\w+)\b') # #ifdef ve #ifndef satırlarını yakalayan regex ifdef_pattern = re.compile(r'^\s*#\s*(ifdef|ifndef)\s+(\w+)\b') # Satır içinde defined(...) ifadelerini yakalamak için regex defined_pattern = re.compile(r'\bdefined\s*\(\s*(\w+)\s*\)') try: with open(file_path, "r", encoding="utf-8", errors="ignore") as f: for line in f: # #define kullanımı m = define_pattern.match(line) if m: macros.add(m.group(1)) # #ifdef veya #ifndef kullanımı m2 = ifdef_pattern.match(line) if m2: macros.add(m2.group(2)) # defined(...) kullanımını satır içinde ara found = defined_pattern.findall(line) for macro in found: macros.add(macro) except Exception as e: print(f"{file_path} dosyası okunurken hata oluştu: {e}") return macros def main(): # Betiğin bulunduğu dizini temel alıyoruz. script_dir = os.path.dirname(os.path.abspath(__file__)) root_dir = script_dir # Projenin ana dizini olarak betiğin bulunduğu dizin kullanılıyor. # service.h dosyasının yolu: ana dizinde "common" klasöründe bulunmalı. service_file_path = os.path.join(root_dir, "common", "service.h") if not os.path.isfile(service_file_path): print(f"Hata: '{service_file_path}' dosyası bulunamadı!") input("Çıkmak için Enter'a basın...") return print("service.h dosyasından makrolar alınıyor...") service_macros = extract_macros_from_file(service_file_path) print("\nservice.h dosyasında bulunan makrolar:") if service_macros: for m in sorted(service_macros): print(" ", m) else: print(" Hiç makro bulunamadı!") # Projedeki (service.h hariç) dosyalarda kullanılan makro isimlerini toplayalım. project_macros = set() valid_extensions = ('.cpp', '.h', '.hpp', '.c', '.cc', '.cxx') print("\nProjedeki dosyalar taranıyor ve makrolar toplanıyor...") for dirpath, dirnames, filenames in os.walk(root_dir): for filename in filenames: current_file = os.path.join(dirpath, filename) # service.h dosyasını taramaya almıyoruz. if os.path.abspath(current_file) == os.path.abspath(service_file_path): continue if not filename.endswith(valid_extensions): continue file_macros = extract_macros_from_file(current_file) if file_macros: project_macros.update(file_macros) # Artık proje içinde bulunan makro isimlerinden, # service.h dosyasında bulunanları çıkarıyoruz. extra_macros = project_macros - service_macros print("\nProje içinde tanımlı fakat service.h dosyasında bulunmayan makrolar:") if extra_macros: for m in sorted(extra_macros): print(" ", m) else: print(" Tüm makrolar service.h dosyasında mevcut!") # Sonuçları extra_defines.txt dosyasına yazıyoruz. output_file = os.path.join(root_dir, "extra_defines.txt") try: with open(output_file, "w", encoding="utf-8") as f: for macro in sorted(extra_macros): f.write(macro + "\n") print(f"\nMakrolar '{output_file}' dosyasına yazıldı.") except Exception as e: print(f"Sonuç dosyası yazılırken hata oluştu: {e}") input("\nÇıkmak için Enter'a basın...") if __name__ == "__main__": main()
Paylaşım için teşekkürler.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 6
- Görüntüleme
- 1K
- Cevaplar
- 7
- Görüntüleme
- 525
- Cevaplar
- 19
- Görüntüleme
- 2K









