No description
Find a file
2025-08-29 11:53:35 +02:00
src downloading from Maven central 2025-08-29 11:53:35 +02:00
tests rudimentary reporting 2025-07-31 17:04:01 +02:00
.gitignore exclude rustrover files 2025-07-23 12:52:30 +02:00
Cargo.lock downloading from Maven central 2025-08-29 11:53:35 +02:00
Cargo.toml downloading from Maven central 2025-08-29 11:53:35 +02:00
Dockerfile downloading from Maven central 2025-08-29 11:53:35 +02:00
README.md downloading from Maven central 2025-08-29 11:53:35 +02:00
TODO.md added comments and rustdoc 2025-07-25 12:54:22 +02:00

currently implementing in rust:

  • V a sax parser to read xml files (and existing xml binding in rust has trouble reading maven properties)
  • V a dom parser to get a generic xml representation
  • V a pom reader to get a maven specific representation
  • V to find out what dependencies you have
  • V try default localRepository ~/.m2/repository
  • load settings.xml
  • V search dependency in localRepository
  • V download dependency from remote repo's

Why rust and not a maven plugin?

  • faster

  • more challenges

  • run it in docker as a separate step

  • report in html

    • list dependencies in descending 'should-I-use-it-score' order (below)
    • drill down to code usage in project

gradle

  • probably easiest to run gradle itself to get the dependency list
  • maybe should've done that with maven as well...
  • but currently it's working rather well (as a POC, it's still missing essential features)

elaborating

  • deciding if you should ditch a dependency, likely involves other factors:
    • (dependency) project quality, as defined by:
      • date of last commit
      • date of highest version on mavencentral
      • java version in bytecode (pre/post java11, I would say)
      • nr of collaborators
      • nr of issues (ratio open/solved vs total)
      • nr of superseded transitive dependencies
      • reported vulnerabilities
      • in some weighted sum(s), yielding a 'should-I-use-it score'
    • and replaceability score: how much work to replace it
      • how many occurrences of usage?c
      • lib or framework?
  • this is going to be a large database,
  • incrementally populated with data
  • what stack?

Another idea

  • compute amount of (dependency) code that is reachable from the application
    • count references (traverse all)
    • what to do with dynamically loaded code?