我想问你是否知道一些计算CK指标的免费C#库(dll)(主要是Cyclomatic Complexity).
对于我打算做的项目,我需要这样做.我知道已经有一些完成的解决方案可以计算CK指标并以各种形式显示给你,但我需要的是我可以在我的应用程序中使用的解决方案.所以在开始写自己之前我首先想问你.
谢谢
我听过有人说(尽管我不记得具体是谁)每行代码的错误数量大致不变,无论使用何种语言.什么是支持这一点的研究?
编辑补充:我没有访问它,但显然,作者提出 "提出这样的问题每行代码(LOC)错误的数量是否是用不同的编程语言或程序不一样."
我想自动化在.NET解决方案上收集代码度量的过程.有没有办法让msbuild运行VS2008开发版中包含的Code Metrics功能?
我可能最终使用SourceMonitor,但我想知道是否有一种方法可以从命令行使用VS代码度量引擎.
我有一个用C++编写的新代码库.我已经开始看到一些不良做法蔓延到项目中(包含1000多行代码的类文件,带有大量参数的函数,......).
我想立即停止使用一些自动化工具,这些工具可以挂钩到构建中并检查不良的编码实践.你对这些工具有什么建议?我对指标感兴趣,但对风格的lint感兴趣,它会突出显示具有37个参数的函数.
你知道是否有一个Python库可以生成有关代码的统计信息吗?我正在考虑指向一个包并获取类,函数,方法,docblock行等的数量.
它最终可能包括像lambdas或其他疯狂统计数字这样无用的东西,只是为了好玩.
我在iOS项目中使用Jenkins for CI,并希望收集一些软件指标.但我能找到的唯一工具是CLOC,它只计算代码行数(LOCs).然而,它总比没有好.
我真正想要计算的是方法,类,对其他类的调用等(做出花哨的圈复杂度的东西).
也许我错过了一些工具,让我知道,如果我这样做.
我们使用TeamCity 6中的内置覆盖应用程序(即将升级到7.1)如果我们希望查看特定构建的代码覆盖率(或其他度量),那么我们就可以导航到该构建,但它会很棒如果我们可以从所有/部分当前项目/构建配置中挑选出一些有趣的指标并将它们全部显示出来.
为方便起见,我希望可以从TeamCity本身访问新的显示,但是如果有解决方案需要单独的解决方案,我们可以查看它们.
我在维基百科上找到了关于圈复杂度的以下段落:
可以证明,只有一个入口点和一个出口点的任何结构化程序的圈复杂度等于该程序中包含的决策点(即"if"语句或条件循环)的数量加一.
这意味着两个任意嵌套if语句的圈复杂度为3:
if (a)
{
if (b)
{
foo();
}
else
{
bar();
}
}
else
{
baz();
}
Run Code Online (Sandbox Code Playgroud)
因为将要调用三个函数中的一个,我的内心同意3.
但是,也可以按顺序编写两个任意if语句,而不是嵌套它们:
if (a)
{
foo();
}
else
{
bar();
}
if (b)
{
baz();
}
else
{
qux();
}
Run Code Online (Sandbox Code Playgroud)
现在代码中有四条路径:
因此,这个片段的圈复杂度不应该是4而不是3吗?
我误解了引用的段落吗?
作为一个喜欢遵循最佳实践的人,
如果我运行代码指标(右键单击解决方案资源管理器中的项目名称并选择"计算代码指标" - Visual Studio 2010):
public static string GetFormFactor(int number)
{
string formFactor = string.Empty;
switch (number)
{
case 1:
formFactor = "Other";
break;
case 2:
formFactor = "SIP";
break;
case 3:
formFactor = "DIP";
break;
case 4:
formFactor = "ZIP";
break;
case 5:
formFactor = "SOJ";
break;
}
return formFactor;
}
Run Code Online (Sandbox Code Playgroud)
它给了我一个61的可维护性指数
(当然,如果你只有这个,这是微不足道的,但是如果你使用像哲学这样的类这样的实用程序,你的实用程序类将具有最差的可维护性指数..)
这是什么解决方案?
我刚刚安装了用于代码分析的Visual Studio Power Tool和用于结果的查看器.顺便说一下,很棒的工具!
当我点击"分析解决方案"时,我得到了结果:
我理解这些都意味着什么,除了对于类中的每个方法存在"继承深度"的不同值,并且对于类具有更大的值.
有没有人解释这可能是什么意思?
c# code-metrics visual-studio-2010 visual-studio-power-tools
code-metrics ×10
c# ×2
c++ ×1
if-statement ×1
indexing ×1
ios ×1
metrics ×1
msbuild ×1
objective-c ×1
python ×1
teamcity ×1