Analyse de dépendances
Dans ce TP, nous allons travailler sur quatre projets open-source:
1. Analyse des dépendances avec Apache Maven
Pour analyser ces projets, nous allons utiliser le plugin Maven Dependency. Son utilisation est très simple, mais il demande que le projet entier (sources et tests) soit compilé avant:
mvn test-compile
mvn dependency:analyze
|
|
Après l’analyse de chaque projet, répondez aux questions suivantes:
-
Le projet contient-il des dépendances qui ne sont pas utilisées ? Si oui, lesquelles ?
-
Le projet utilise-t-il des dépendances qui ne sont pas déclarées ? Si oui, lesquelles ?
2. Analyse des dépendances avec Depclean
Maintenant, vous allez utiliser le plugin Depclean.
Ce plugin crée un nouveau fichier nommé pom-debloated.xml,
qui met à plat les dépendances du projet et supprime les dépendances non utilisées.
Pour l’exécuter sans modifier la configuration du projet:
mvn se.kth.castor:depclean-maven-plugin:2.1.0:depclean -DcreatePomDebloated=true
Après l’exécution, cherchez et analysez le ou les fichiers pom-debloated.xml.
Pour retrouver les fichiers crées dans un projet multi-modules, git est ton ami: git status
|
Pour aider votre analyse, vous pouvez utiliser à nouveau le plugin Dependency, mais cette fois avec le fichier généré:
mvn -f pom-debloated.xml dependency:analyze
mvn -f pom-debloated.xml dependency:tree
-
Depclean a-t-il supprimé toutes les dépendances non utilisées ?
-
Le fichier POM généré contient-il plus ou moins de dépendances que l’originel ? Pourquoi ?
3. Analyse des dépendances avec CycloneDX
Nous allons maintenant utiliser le plugin Maven CycloneDX pour construire une Software Bill of Materials, SBOM.
Pour l’exécuter sans modifier la configuration du projet:
mvn org.cyclonedx:cyclonedx-maven-plugin:2.9.1:makeAggregateBom
Le ficher SBOM sera généré dans le dossier target.
Analysez ce fichier pour répondre aux questions suivantes:
-
Ce fichier contient-il plus ou moins de dépendances que le fichier POM ? Pourquoi ?
-
Les version des dépendances correspondent-elles à celle du fichier POM ?