Почему в представлении Sonar не отображаются зависимости для моего проекта? - PullRequest
2 голосов
/ 10 мая 2011

Я успешно настроил Sonar для большого Java-проекта, созданного с использованием Ant.Наконец-то я подключил результаты теста JUnit и отчет о покрытии кода Cobertura.

Теперь я вижу все пакеты в представлении разработки, но нет никаких значений для зависимостей между какими-либо пакетами или классами (см. Примерниже).

No dependencies

Кто-нибудь знает, что я здесь пропустил?

ОБНОВЛЕНИЕ

Глядя наВ результате выполнения задачи Sonar Ant я также заметил, что задача создания пакета завершается очень быстро для довольно крупного и сложного проекта.Из вывода Ant:

[sonar:sonar] [INFO]  Package design analysis...
[sonar:sonar] [INFO]  Package design analysis done: 66 ms

Задача Ant выглядит следующим образом:

<target name="sonar" depends="collate-xml-reports">
    <sonar:sonar workDir="src/build/sonarTemp" key="myProjectKeyWhichHasBeenChangedToHideMyClient" version="1.0" xmlns:sonar="antlib:org.sonar.ant">

        <!-- source directories (required) -->
        <sources>
            <path location="src/common/src" />
            <path location="src/commonWidgets/src" />
            <path location="src/compositionWidget/src" />
            <path location="src/nativeLib/src" />
            <path location="src/services/src" />
        </sources>

        <!-- list of properties (optional) -->
        <property key="sonar.projectName" value="RPS Nightly" />
        <property key="sonar.dynamicAnalysis" value="reuseReports" />
        <property key="sonar.surefire.reportsPath" value="src/reports/junit" />
        <property key="sonar.cobertura.reportPath" value="src/reports/cobertura/coverage.xml" />

        <!-- test source directories (optional) -->
        <tests>
            <path location="src/common/test" />
            <path location="src/commonWidgets/test" />
            <path location="src/compositionWidget/test" />
            <path location="src/services/test" />
        </tests>

        <!-- binaries directories, which contain for example the compiled Java bytecode (optional) -->
        <binaries>
            <path location="src/common/build" />
            <path location="src/commonWidgets/build" />
            <path location="src/compositionWidget/build" />
            <path location="src/services/build" />
        </binaries>

        <!-- path to libraries (optional). These libraries are for example used by the Java Findbugs plugin -->
        <libraries>
            <path location="src/common/lib/**/" />
            <path location="src/commonWidgets/lib/**/" />
            <path location="src/compositionWidget/lib/**/" />
            <path location="src/services/lib/" />
        </libraries>
    </sonar:sonar>
</target>

1 Ответ

1 голос
/ 12 мая 2011

Будучи Java n00b, получается, что это было недоразумение с моей стороны. Расположение каталога binaries должно указывать на корневую папку скомпилированного байт-кода Java, но я указывал на местоположение файла JAR. В этом случае байт-код записывается в папку build / classes, поэтому мне нужно было изменить мою цель ant (показанную в вопросе) с:

    <binaries>
        <path location="src/common/build" />
        <path location="src/commonWidgets/build" />
        <path location="src/compositionWidget/build" />
        <path location="src/services/build" />
    </binaries>

Кому:

    <binaries>
        <path location="src/common/build/classes" />
        <path location="src/commonWidgets/build/classes" />
        <path location="src/compositionWidget/build/classes" />
        <path location="src/services/build/classes" />
    </binaries>

Это устранило проблему, и представление дизайна теперь правильно заполнено.

...