Analysis of project with multiple programming languages and/or projects with multiple Git repositories and/or multiple components
Our current implementation mostly assume that a "project" is a single Git repository with a software build using a single type of package manager or equivalent (e.g. Maven, Gradle, NPM, Pip, Make, etc.), this software being considered as a single component and usually a single programming language used.
This is actually not inline with several OW2 projects. E.g.:
- XWiki includes at least 2 distinct Git repositories (xwiki-platform and xwiki-commons) that include source code required to build the final binary version
- Knowage has a single Git repository ((Knowage-Server)[https://github.com/KnowageLabs/Knowage-Server]) that includes component coded in Java ((knowage-core)[https://github.com/KnowageLabs/Knowage-Server/tree/master/knowage-core]) and other coded in JavaScript ((knowage-vue)[https://github.com/KnowageLabs/Knowage-Server/tree/master/knowage-vue]).
knowage-vue
is actually a Java web application built using Maven but Maven will actually trigger execution of NPM to build the JavaScript code that use the Vue.js framework. - ASM is a project build from several components/subprojects (core, tree, util, etc), but we provide only a global result and didn't isolate each individual component (see https://gitlab.ow2.org/ow2/servicedesk/-/issues/517#note_42028);
I think the first step to solve this complex problem is to define a list of "elements" types (e.g. OW2 project, Git repository, SonarQube project, project module, etc.) and clarify how they relate together (relation 1..1, 1..*, ..).
I guess that our goal should be that MRL give a vision of the whole OW2 project no matter the underlying organization of the code. Probably some aggregation would be needed to group data coming from different sources (of different types: GitHub repository, Scancode results, etc.) for a single MRL project and maybe also some aggregation need to be done in SonarQube.