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
  • Avant de compiler le projet ActiveMQ, il faut l’installer localement, avec le profil release:

    mvn install -Prelease -DskipTests
  • Le profil release de ce projet demande une version précise de Java pour compiler. Vous pouvez désactiver cette exigence avec l’option -Denforcer.skip=true:

    mvn install -Prelease -DskipTests -Denforcer.skip=true
  • Si Checkstyle vous empêche de compiler des projets, vous pouvez le désactiver avec l’option:

    -Dcheckstyle.skip
  • Si c’est RAT (Release Audit Tool) qui vous dérange, vous pouvez le désactiver avec:

    -Drat.skip=true

Après l’analyse de chaque projet, répondez aux questions suivantes:

  1. Le projet contient-il des dépendances qui ne sont pas utilisées ? Si oui, lesquelles ?

  2. 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
  1. Depclean a-t-il supprimé toutes les dépendances non utilisées ?

  2. 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:

  1. Ce fichier contient-il plus ou moins de dépendances que le fichier POM ? Pourquoi ?

  2. Les version des dépendances correspondent-elles à celle du fichier POM ?