Недавно я установил SonarQube до версии 6.2. Я заметил, что показатели покрытия кода резко сократились. В деталях покрытия я вижу, что файлы с @codeCoverageIgnore
аннотация или интерфейсы имеют открытые линии. Похоже, что сонар вычисляет покрытие по количеству покрытых строк (из выходного журнала PHPUnit xml) за все файлы в каталоге, указанном sonar.sources
в sonar-project.properties
,
Перед установкой SonarQube на моем сервере я играл с версией 6.1, работающей на официальном образе Docker, и это работало как чудо.
Я не нашел открытых вопросов / тикеров / похожих вопросов, связанных с такой проблемой, поэтому, возможно, я делаю что-то не так.
Подробности:
phpunit --coverage-clover=build/phpunit.coverage.xml --log-junit=build/phpunit.log.xml
Ваши номера покрытия упали с SonarQube 6.2 и SonarPHP 2.9.2, потому что эта комбинация версий (и выше) передает данные «исполняемых строк», так что покрытие может быть «обнулено» для файлов, которые не включены в отчеты о покрытиях.
И.Е. SonarQube 6.2 разработан, чтобы дать вам более точное представление о том, каков ваш истинный коэффициент покрытия. До этого ему приходилось полагаться на список файлов и строк, передаваемых механизмом покрытия, и многие механизмы покрытия просто игнорировали (то есть не включали в свои отчеты) файлы, в которых ни одна из строк не проверялась. Теперь анализатор кода, в данном случае SonarPHP, передает список исполняемых строк для всех тех файлов, которые игнорируются вашим механизмом покрытия, поэтому у вас есть большее число непокрытых строк и, следовательно, процент покрытия.
Если вы хотите, чтобы ваши номера покрытия вернулись к тому, чем они были, у вас есть два варианта:
Других решений пока нет …