Amélioration de la javadoc

This commit is contained in:
2025-03-07 22:13:57 +01:00
parent f1f378d68d
commit 3e9fa75023
11 changed files with 234 additions and 899 deletions

View File

@@ -8,6 +8,14 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* Parseur de fichier Bakefile.
* Cette classe est responsable de l'analyse syntaxique du fichier Bakefile
* pour extraire les règles de build, les dépendances et les commandes associées.
*
* @author Moncef STITI, Yanis HAMOUDI, Louay DARDOURI
* @version 1.0
*/
public class BakefileParser {
/**
@@ -62,11 +70,21 @@ public class BakefileParser {
*/
private Map<String, String> variables = new HashMap<>();
/**
* Constructeur de la classe BakefileParser.
* @param filename Nom du fichier Bakefile à parser
*/
public BakefileParser(String filename) {
this.filename = filename;
firstTarget = null;
}
/**
* Gérer les lignes de continuation.
* @param lines Liste des lignes du fichier Bakefile
* @param startIndex Index de la première ligne de continuation
* @return La ligne combinée
*/
private String handleContinuationLines(List<String> lines, int startIndex) {
StringBuilder combinedLine = new StringBuilder();
int i = startIndex;
@@ -89,6 +107,11 @@ public class BakefileParser {
return combinedLine.toString();
}
/**
* Remplacer les variables dans une chaîne.
* @param input Chaîne à traiter
* @return Chaîne avec les variables remplacées
*/
private String replaceVariables(String input) {
if (input == null) return null;
@@ -126,12 +149,22 @@ public class BakefileParser {
return result.trim();
}
/**
* Remplacer les variables dans une liste de chaînes.
* @param items Liste de chaînes à traiter
* @return Liste de chaînes avec les variables remplacées
*/
private List<String> replaceVariablesInList(List<String> items) {
return items.stream()
.map(this::replaceVariables)
.collect(Collectors.toList());
}
/**
* Découper les dépendances en une liste de chaînes.
* @param depStr Chaîne de dépendances
* @return Liste de dépendances
*/
private List<String> splitDependencies(String depStr) {
if (depStr == null || depStr.trim().isEmpty()) {
return new ArrayList<>();
@@ -144,6 +177,11 @@ public class BakefileParser {
.collect(Collectors.toList());
}
/**
* Découper les cibles en une liste de chaînes.
* @param targetStr Chaîne de cibles
* @return Liste de cibles
*/
private List<String> splitTargets(String targetStr) {
if (targetStr == null || targetStr.trim().isEmpty()) {
return new ArrayList<>();
@@ -156,6 +194,10 @@ public class BakefileParser {
.collect(Collectors.toList());
}
/**
* Analyser le fichier Bakefile pour extraire les règles de build.
* @return Liste des règles extraites
*/
public List<Rule> parse() {
List<Rule> rules = new ArrayList<>();
Set<String> phonyTargets = new HashSet<>();