这是stan4j的一些复杂性度量。
蚀类结构分析工具。
我喜欢这个工具和指标。我将指标视为统计数据,指标,警告消息。有时由于某些方法或某些类确实具有某种复杂的逻辑而使它们变得复杂,因此需要做的是留意它们,检查它们以查看是否有必要对其进行重构或仔细地对其进行检查,通常是由于正常情况他们容易出错。由于我喜欢从复杂到简单的学习,因此我也将其用作分析工具来学习源代码。实际上,它包括其他一些指标,例如Robert C. Martin Metrics,Chidamber&Kemerer Metrics,Count Metrics,但我最喜欢这一指标
复杂度指标
圈复杂度指标
循环复杂度(CC)方法
的循环复杂度是该方法的控制流程图中决策点的数量加1。决策点出现在if / for / while语句,case / catch子句和类似的源代码元素中,其中控制流不仅是线性的。单个(源代码)语句引入的(字节代码)决策点的数量可能会有所不同,例如,取决于布尔表达式的复杂性。方法的圈复杂度值越高,测试该方法的控制流程图的所有分支所需的测试用例就越多。
平均环复杂度
度整个应用程序,库,包树或包的所有方法上的Cyclomatic Complexity度量标准的平均值。
脂肪指标
工件的Fat度量是工件的适当依赖图中的边数。依赖图的类型取决于度量变量和所选的工件:
脂肪
应用程序,库或程序包树的Fat度量标准是其子树相关性图的边缘计数。此图包含包树层次结构中所有工件的子级,因此还包括叶包。(要在“合成视图”中查看适当的图形,必须禁用“结构浏览器”的“平面包装”切换。如果所选工件是库,则必须启用“显示库”切换,否则必须将其禁用。)
包的Fat度量是其单元依赖图的边数。此图包含该软件包的所有顶级类。
类的Fat度量是其成员图的边缘计数。该图包含该类的所有字段,方法和成员类。(仅当代码分析是使用“详细级别成员”而非“类”执行的时,此图和“胖”值才可用。)
依赖库
的胖度(胖-库)应用程序的依赖库的胖度度量是其库依赖图的边缘计数。该图包含应用程序的所有库。(要在“合成视图”中查看适当的图形,必须启用“结构浏览器”的“显示库”切换。)
扁平包依赖关系的胖度(胖-包)
应用程序的扁平包依赖关系的胖度量是其扁平包依赖关系图的边缘计数。该图包含该应用程序的所有软件包。(要在“合成视图”中查看适当的图形,必须启用“结构浏览器”的“平面包装”切换,并且必须禁用“显示库”切换。)
库的“扁平包装依赖关系的胖度”度量标准是其扁平包装依赖关系图的边缘计数。该图包含该库的所有软件包。(要在“合成”视图中查看适当的图形,必须启用“结构浏览器”的“平面包”和“显示库”切换。)
顶级类依赖关系的胖度(胖-单位)
应用程序或库的顶级类依赖关系的胖度度量是其单元依赖关系图的边缘计数。此图包含应用程序或库的所有顶级类。(对于合理的应用程序,它太大而无法可视化,因此无法在“合成视图”中显示。单位相关性图可能仅显示包。)
the number of StyleCop warnings + 10 * the number of FxCop warnings + 2 to the power of the number of disabled warning types
。只有在该度量的值尽可能小之后,一个人才有必要开始审查该代码(我认为)。总之:复杂的工具而不是简单的公式可以帮助提高代码质量。虽然这可能是题外话。