Shared codebase for all 3 gemnasium analyzers

Summary

Make all 3 gemnasium analyzers share the same codebase. gemnasium-maven and gemnasium-python are implemented in gemnasium, and code is shared using git submodules. See https://gitlab.com/fcatteau/gemnasium-git-submodule for a PoC.

Update gemnasium to cover all types of projects, including Java and Python projects. The gemnasium CLI is able to handle all sorts of projects, including Java and Python projects. Supported package managers can be set at run-time, using environment variables.

The build remains specific to each project, and gemnasium-maven and gemnasium-python each have a distinct Dockerfile and a distinct CI configuration file.

Implementation plan

  • update gemnasium to emulate other projects
    • copy relevant source code from gemnasium-maven
    • copy relevant source code from gemnasium-python
    • enable all builders, file parsers, and vrange plugins
    • enable or disable these are runtime, based on CLI flags, so that the CLI can behave like gemnasium, gemnasium-maven, or gemnasium-python
  • update gemnasium-maven to use gemnasium as a git submodule
    • update Dockerfile to use git submodule, and set build arguments to behave like before
    • copy expected reports to gemnasium project, and update test projects accordingly
    • README update and project cleanup
  • update gemnasium-python to use gemnasium as a git submodule
    • update Dockerfile to use git submodule, and set build arguments to behave like before
    • copy expected reports to gemnasium project, and update test projects accordingly
    • README update and project cleanup

User doc, developer doc, and CI template don't change.

Project build, CI config, and versioning don't change.

Improvements

  • There's a single CLI that supports everything (if the runtime environment satisfies all the dependencies).
  • It's easy to use a particular branch of gemnasium in the other projects.

Risks

None identified

Involved components

Optional: Intended side effects

Optional: Missing test coverage

None

Edited by Fabien Catteau