Измерить охват кода единицы измерения для функции / метода при цикломатической сложности?
Существует ли подход для сбора / составления отчета о покрытии модульных тестов на основе отношения сложности, такого как цикломатическая сложность, на уровне метода / функции?
Причина / намерение состоит в том, чтобы предоставить измеримую метрику, чтобы показать, что у любых областей, которые имеют более высокую вероятность дефектов на основе сложности, фактически есть соответствующее покрытие модульных тестов (то есть метрика вне покрытия "100%" или "80%" путем изменения метрика до '100% цикломатической сложности>= 10, например).
Мой пример использования в настоящее время Java/junit, и другой подход для достижения того же намерения также будет полезен (не обязательно должен быть метод / функция, основанный на Cyclomatic, но подобный тип измерения).
РЕДАКТИРОВАТЬ: если есть инструмент покрытия кода с аналогичными функциями для Java и.NET, это было бы феноменально.
Спасибо! -Darren
1 ответ
Отказ от ответственности: я разработчик Clover в Atlassian. Я вижу, что вы отметили свой вопрос как "клевер", поэтому я отвечаю:-)
В Clover вы можете сделать это двумя способами (также объединить их):
1) Вы можете определить контекстный фильтр и не применять методы с цикломатической сложностью <= N. См.
2) Вы можете определить свою собственную метрику, например, умножить значение покрытия (или лучше - "непокрытое" значение) на цикломатическую сложность. Такая метрика показала бы, что сложные, непокрытые методы более значимы, чем простые, непокрытые. Смотрите <отчет-клевер> / <столбцы>
Ой. Еще кое-что. Clover автоматически делает это за вас:-) В отчете HTML вы видите "облако тегов" из метрик Top Project Risks, которое охватывает охват и сложность, чтобы показать наиболее потенциально важные части приложения.
Рекомендации: