fix: remove logs
This commit is contained in:
119
remove_logs.py
Normal file
119
remove_logs.py
Normal file
@@ -0,0 +1,119 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Скрипт для удаления Log.d/e/w/i/v вызовов из Kotlin файлов
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
def remove_logs_from_file(filepath):
|
||||
"""Удаляет Log.d/e/w/i/v вызовы из файла"""
|
||||
|
||||
with open(filepath, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
original_content = content
|
||||
|
||||
# Паттерн для Log.d/e/w/i/v с учетом многострочных вызовов
|
||||
# Матчит: Log.d("TAG", "message") или Log.d(TAG, "message", exception)
|
||||
patterns = [
|
||||
# Простые однострочные логи
|
||||
r'^\s*Log\.[dewiv]\([^)]*\)\s*\n',
|
||||
# Многострочные логи (с переносами внутри скобок)
|
||||
r'^\s*Log\.[dewiv]\([^)]*\n[^)]*\)\s*\n',
|
||||
r'^\s*Log\.[dewiv]\([^)]*\n[^)]*\n[^)]*\)\s*\n',
|
||||
r'^\s*Log\.[dewiv]\([^)]*\n[^)]*\n[^)]*\n[^)]*\)\s*\n',
|
||||
# android.util.Log
|
||||
r'^\s*android\.util\.Log\.[dewiv]\([^)]*\)\s*\n',
|
||||
]
|
||||
|
||||
for pattern in patterns:
|
||||
content = re.sub(pattern, '', content, flags=re.MULTILINE)
|
||||
|
||||
# Более агрессивный паттерн для оставшихся логов
|
||||
# Находит Log.X( и удаляет до закрывающей скобки
|
||||
def remove_log_call(match):
|
||||
return ''
|
||||
|
||||
# Паттерн который находит Log.X(...) учитывая вложенные скобки
|
||||
log_pattern = r'^\s*(?:android\.util\.)?Log\.[dewiv]\s*\([^()]*(?:\([^()]*\)[^()]*)*\)\s*\n?'
|
||||
content = re.sub(log_pattern, '', content, flags=re.MULTILINE)
|
||||
|
||||
if content != original_content:
|
||||
with open(filepath, 'w', encoding='utf-8') as f:
|
||||
f.write(content)
|
||||
return True
|
||||
return False
|
||||
|
||||
def find_kotlin_files(directory):
|
||||
"""Находит все .kt файлы в директории"""
|
||||
kotlin_files = []
|
||||
for root, dirs, files in os.walk(directory):
|
||||
# Пропускаем build директории
|
||||
dirs[:] = [d for d in dirs if d not in ['build', '.gradle', '.idea']]
|
||||
for file in files:
|
||||
if file.endswith('.kt'):
|
||||
kotlin_files.append(os.path.join(root, file))
|
||||
return kotlin_files
|
||||
|
||||
def count_logs_in_file(filepath):
|
||||
"""Считает количество Log вызовов в файле"""
|
||||
with open(filepath, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
pattern = r'(?:android\.util\.)?Log\.[dewiv]\s*\('
|
||||
matches = re.findall(pattern, content)
|
||||
return len(matches)
|
||||
|
||||
def main():
|
||||
# Директория с исходниками
|
||||
src_dir = '/Users/ruslanmakhmatov/Desktop/Work/rosette-app/rosetta-android/app/src/main/java/com/rosetta/messenger'
|
||||
|
||||
if not os.path.exists(src_dir):
|
||||
print(f"Директория не найдена: {src_dir}")
|
||||
sys.exit(1)
|
||||
|
||||
kotlin_files = find_kotlin_files(src_dir)
|
||||
print(f"Найдено {len(kotlin_files)} Kotlin файлов")
|
||||
|
||||
# Сначала считаем логи
|
||||
total_logs_before = 0
|
||||
files_with_logs = []
|
||||
for filepath in kotlin_files:
|
||||
count = count_logs_in_file(filepath)
|
||||
if count > 0:
|
||||
total_logs_before += count
|
||||
files_with_logs.append((filepath, count))
|
||||
|
||||
print(f"Найдено {total_logs_before} Log вызовов в {len(files_with_logs)} файлах")
|
||||
|
||||
if '--dry-run' in sys.argv:
|
||||
print("\n[DRY RUN] Файлы с логами:")
|
||||
for filepath, count in sorted(files_with_logs, key=lambda x: -x[1]):
|
||||
print(f" {count:3d} логов: {os.path.basename(filepath)}")
|
||||
return
|
||||
|
||||
# Удаляем логи
|
||||
modified_count = 0
|
||||
for filepath in kotlin_files:
|
||||
if remove_logs_from_file(filepath):
|
||||
modified_count += 1
|
||||
print(f"✓ {os.path.basename(filepath)}")
|
||||
|
||||
# Считаем оставшиеся
|
||||
total_logs_after = 0
|
||||
for filepath in kotlin_files:
|
||||
total_logs_after += count_logs_in_file(filepath)
|
||||
|
||||
print(f"\n{'='*50}")
|
||||
print(f"Изменено файлов: {modified_count}")
|
||||
print(f"Логов до: {total_logs_before}")
|
||||
print(f"Логов после: {total_logs_after}")
|
||||
print(f"Удалено: {total_logs_before - total_logs_after}")
|
||||
|
||||
if total_logs_after > 0:
|
||||
print(f"\n⚠️ Осталось {total_logs_after} логов (возможно сложные многострочные)")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user