Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 34 additions & 13 deletions .github/workflows/scripts/check_structure.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,48 @@
#!/usr/bin/env python3
import pathlib
import sys
from typing import Iterator

# Utilisation de constantes en majuscules pour le Clean Code
VALID_PATHS = (
pathlib.Path("src/main/java/com/thealgorithms/"),
pathlib.Path("src/test/java/com/thealgorithms/"),
)


def _is_java_file_properly_located(java_file: pathlib.Path) -> bool:
main_parents = java_file.parent.parents
return (
pathlib.Path("src/main/java/com/thealgorithms/") in main_parents
or pathlib.Path("src/test/java/com/thealgorithms/") in main_parents
)
"""Vérifie si un fichier Java est dans l'un des répertoires autorisés."""
# any() est plus rapide et moderne pour valider une condition parmi plusieurs
return any(valid_path in java_file.parents for valid_path in VALID_PATHS)


def _find_misplaced_java_files() -> list[pathlib.Path]:
return [
def _find_misplaced_java_files() -> Iterator[pathlib.Path]:
"""Recherche et retourne les fichiers Java mal placés sous forme de générateur."""
# Remplacement de la liste par un générateur (Iterator) pour économiser la mémoire (approche Data)
return (
java_file
for java_file in pathlib.Path(".").rglob("*.java")
if not _is_java_file_properly_located(java_file)
]
)


if __name__ == "__main__":
misplaced_files = _find_misplaced_java_files()
def main() -> None:
"""Fonction principale du script."""
# Conversion du générateur en liste uniquement au moment de l'affichage
misplaced_files = list(_find_misplaced_java_files())

if misplaced_files:
print("The following java files are not located in the correct directory:")
for _ in misplaced_files:
print(_)
# Utilisation de f-strings modernes et écriture sur la sortie d'erreur standard (stderr)
print(
f"❌ Error: Found {len(misplaced_files)} Java file(s) in incorrect directories:",
file=sys.stderr,
)
for file_path in misplaced_files:
print(f" - {file_path}", file=sys.stderr)
sys.exit(1)

print("✅ Success: All Java files are properly located.")


if __name__ == "__main__":
main()
Loading