Общие сведения о SonarQube и его тестировании

Я новичок в SonarQube и действительно пытался гуглить и читать много страниц сообщества, чтобы понять, какие функции предлагает SonarQube.

Что я не понимаю: к чему относится тестовое покрытие в SonarQube? Если там, например, написано, что охват нового кода составляет 30%, что означает новый код?

И когда SonarQube сообщает, что проблема является ошибкой? Сравнивается ли анализируемый код с определенным стандартом, чтобы SonarQube мог сказать, что есть ошибка?

Я надеюсь, что кто-то, обладающий более глубокими знаниями о SonarQube, может помочь мне понять это. Большое тебе спасибо


person Ben    schedule 03.06.2020    source источник


Ответы (1)


Покрытие тестами (также известное как покрытие кода) соответствует доле кода приложения (т. е. кода без тестов и примеров кода), которая выполняется тестовыми примерами, из всего кода приложения в базе кода.

SonarQube не вычисляет покрытие кода самостоятельно. Вместо этого покрытие вычисляется и загружается с помощью внешних инструментов покрытия кода (например, cobertura, JaCoCo). SonarQube представляет покрытие кода на разных уровнях (например, покрытие линии, покрытие условий); см. https://docs.sonarqube.org/latest/user-guide/metric-definitions/#header-9.

Покрытие нового кода относится к доле кода, который покрывается и добавляется (или изменяется) с определенного базового уровня из всего добавленного и измененного кода с того же базового уровня. Базовым показателем может быть, например, ранее проанализированное состояние кода или состояние кода предыдущей фиксации. То есть этот показатель показывает, насколько тщательно были протестированы изменения. Обратите внимание, что 100% покрытие не означает, что код был идеально протестирован; он просто говорит, что весь код был выполнен с помощью тестовых примеров.

Проблемы в SonarQube не обязательно представляют собой ошибки. Обычно большинство проблем на самом деле не являются ошибками, а являются проблемами, влияющими на ремонтопригодность кода в долгосрочной перспективе (например, дублирование кода) или нарушением передовых практик. Тем не менее, некоторые проблемы могут представлять собой ошибки (например, потенциальное разыменование нулями, неправильная обработка параллелизма). Обратите внимание, что проблема также может быть ложноположительной и, следовательно, вообще не быть проблемой.

Большинство проблем выявляются с помощью статического анализа кода путем поиска определенных шаблонов в структуре кода. Некоторые могут быть обнаружены простым поиском кода (например, нарушение соглашений об именах). Другие классы анализа / проблемы могут дополнительно нуждаться в анализе потока данных (разыменование нулями) или информации о байтовом коде.

person nrainer    schedule 03.06.2020