C #: Цикломатическая сложность метода с FxCop sdk

Мне нужно рассчитать цикломатическую сложность методов C # и определить правило в соответствии со значением CC в FXcop 12.0.

Я обнаружил, что такие инструменты, как Code Metrics, предоставляют функции для расчета Значения CC, но я не знаю, как использовать это в своем коде. В основном мое требование - это значение CC, передаваемое через сонар.

Если кто-нибудь написал специальное правило для этого или есть идеи, как это сделать, пожалуйста, помогите


person knightmare313    schedule 25.06.2015    source источник


Ответы (2)


Возможно, вы можете использовать инструмент NDepend.

Он интегрирован с SonarQube.

Он имеет обе встроенные метрики кода:

Он интегрирован в Visual Studio и позволяет легко писать собственные правила кода. Такое правило на самом деле является запросом C # LINQ.

Например, если вы хотите написать правило кода для сопоставления методов, которые одновременно сложны и плохо охватываются тестами, просто напишите:

// <Name>Complex methods poorly covered by tests</Name>
warnif count > 0 
from m in Application.Methods
where m.CyclomaticComplexity > 10 && 
      m.PercentageCoverage < 20
select new { 
   m, 
   m.CyclomaticComplexity, 
   m.PercentageCoverage,
   m.NbLinesOfCode 
}

Цикломатическая сложность правила пользовательского кода NDepend

Заявление об ограничении ответственности: я работаю в NDepend

person Patrick from NDepend team    schedule 26.06.2015

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

Если вам действительно требуется, чтобы в SonarQube был доступен тот же отчет о значении сложности от FxCop, я бы посоветовал вам написать плагин SonarQube для хранения этого значения в качестве метрики и полагаться на FxCop для его вычисления: не пытайтесь отменить -инженер, как FxCop это вычисляет.

К вашему сведению, у нас есть долгосрочный план по согласованию вычислений метрик между SonarQube, Code Metrics, FxCop и т. Д. И использованием тех же формул, но это займет время.

person Dinesh Bolkensteyn    schedule 25.06.2015