2015-06-25 2 views
2

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

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

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

ответ

1

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

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

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

1

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

Это integrated with SonarQube.

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

Он интегрирован в Visual Studio и позволяет легко писать собственное правило кода. Такой rule is actually a C# LINQ query.

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

// <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 custom code rule cyclomatic complexity

Отказ от ответственности: Я работаю NDepend