2015-09-25 2 views
2

У меня есть четыре проекта, которые имеют несколько общих модулей.SonarQube: как анализировать проекты с несколькими модулями?

Когда я пытаюсь выполнить полный анализ SonarQube, только первый проект успешно анализируется. Начиная со второго проекта, я получаю сообщение об ошибке в строках «XXX-модуль уже присутствует на сервере».

Каждый из моих четырех проектов содержит агрегатор POM. Это то, что я использую, чтобы построить их и запустить сонар Maven: сонар.

Какой был бы наилучший подход для решения этой проблемы?

ответ

-1

Кажется, что вы нарушаете условные обозначения компонентов/модулей/библиотек или неправильно использовали его. Из принципов Configuration Management вы не должны «включать» (создайте в случае управления двоичной конфигурацией) свой компонент несколько раз.

Наличие библиотеки, которая имеет много других, которая зависит от и последней, является независимой, это просто зависимость, которую вы должны управлять appart, как и любая другая структура.

Вы просто должны установить или развернуть этот компонент самостоятельно, а затем просто обратиться к нему. Эти же принципы применяются к SonarQube Configuration Manager. Вы не можете анализировать общие компоненты через разные «продукты».

У них должен быть свой жизненный цикл. Как вы управляете эволюцией общих librairies, когда есть четыре проекта, живущих параллельно друг другу?

+0

Это на самом деле не проблема здесь. Я также могу построить многомодульный проект и применить к нему Sonar. Проблема возникает, когда у меня есть несколько многомодульных проектов, совместно использующих модули. Тогда общие модули не могут быть загружены в SonarQube, так как Sonar разрешает ** один ** экземпляр компонента существовать в любой момент времени. – Enrique

+2

Вы просто нарушаете принципы управления конфигурацией. См. Мой отредактированный пост для более подробного объяснения. – LoganMzz

0

Если вы используете общие модули, вы имеете в виду, что модуль присутствует как в Project A, так и в Project B, тогда да, это создаст проблему, потому что SONAR разрешает присутствие только одного экземпляра модуля.

Что вы можете сделать, это запустить SONAR на вашем проекте 1 затем очистить рабочее пространство и снова запустить его для проекта 2 .. и так далее ...

Таким образом, вы бы только один экземпляр модуля в SONAR за раз.

Возможно, вы можете написать сценарий для выполнения заданий SONAR один за другим и создать новое задание для этого в Jenkins.

+0

Да, это то, что я имею в виду под «разделяемыми модулями». Однако у меня есть вопрос: что вы подразумеваете под понятием «очистить рабочее пространство»? – Enrique

+0

check This out ... Это может быть полезно для вас: http://stackoverflow.com/questions/8487602/setup-sonar-runner-for-multiple-java-projects – sumit

Смежные вопросы