Для всех, кто сталкивался с этой проблемой, я, наконец, попросил Сонар доложить о нашем покрытии Код Эммы.Первая проблема заключалась в том, что плагин Emma не поставлялся с версией Sonar, которую я использовал (3.1.1).Мне пришлось загрузить его и установить в каталог extensions/plugins
Sonar и перезапустить его.
Затем мне пришлось установить следующие свойства в моем build.xml:
<property name="sonar.core.codeCoveragePlugin" value="emma" />
<property name="sonar.emma.reportPath" value="${coverage.dir}" />
После этого я по крайней мере увидел следующий вывод после запуска задачи Sonar Ant:
[sonar:sonar] 13:41:49.705 WARN org.sonar.INFO - No coverage (*.ec) file found in /my/local/path
[sonar:sonar] 13:41:49.708 WARN org.sonar.INFO - No metadata (*.em) file found in /my/local/path
После некоторого копания я обнаружил, что внутри плагина Sonar Emma ,он жестко запрограммирован для поиска файла .ec (покрытие) и файла .em (метаданные).К сожалению, мой файл покрытия имел расширение .emma, как и мой файл метаданных, и я не смог переименовать их, так как это нарушило бы другие функции.Поэтому я написал следующую задачу Ant для копирования файлов в соответствии со стандартом именования, которого ожидает плагин Sonar Emma.
<target name="createEmmaFilesWithSonarNamingStandard" depends="defineAntContribTasks">
<if>
<available file="${coverage.dir}/metadata.emma" />
<then>
<copyfile src="${coverage.dir}/metadata.emma" dest="${coverage.dir}/metadata.em" />
</then>
</if>
<if>
<available file="${coverage.dir}/coverage.emma" />
<then>
<copyfile src="${coverage.dir}/coverage.emma" dest="${coverage.dir}/coverage.ec" />
</then>
</if>
</target>
После повторного запуска я столкнулся с новой проблемой:
org.sonar.api.utils.SonarException: java.io.IOException: cannot read [/my/local/path/build/coverage/metadata.em]: created by another EMMA version [2.0.5312]
После еще нескольких копаний я обнаружил, что плагин Sonar Emma 1.0.1 был скомпилирован с Emma 2.0.5312 и Sonar Emma 1.1 и 1.2.x с Emma версии 2.1.5320, как указано в плагине Sonar Emma page.
Я скачал версию Emma 2.1.5320, заменил emma.jar , а также emma_ant.jar в моем каталоге Ant lib.После чистой перекомпиляции и тестирования я смог повторно запустить задачу Sonar Ant, и мой охват кода был отражен в Sonar.