我对数据挖掘项目感兴趣,并且一直想创建一种分类算法来确定哪些特定签入需要代码审查,哪些可能不需要。
我已经为我的算法开发了许多启发式方法,尽管我还没有找出杀手......
如何以编程方式检查一段代码的计算复杂性?
此外,甚至更有趣的是 - 我如何不仅使用代码,还使用源代码控制存储库提供的差异来获取更好的数据..
IE:如果我增加了我正在签入的代码的复杂性 - 但它降低了剩下的代码的复杂性 - 难道这不应该被认为是“好的”代码吗?
对您对此的想法感兴趣。
更新
显然我没说清楚。 我想要这个
double codeValue = CodeChecker.CheckCode(someCodeFile);
我希望根据代码的好坏得出一个数字。 我将从 VS2008 在计算复杂性时给出的数字开始,但想转向进一步的启发式。
有人有什么想法吗? 我们将不胜感激!
您看过NDepend吗? 该工具可用于计算代码复杂性并支持查询语言,通过该语言您可以获得应用程序上的大量数据。
NDepend 网站包含各种指标的定义列表。决定哪些在您的环境中最重要很大程度上取决于您。
NDepend 还有一个 命令行版本,可以集成到您的构建过程中。
此外,Microsoft 的代码分析(随 VS Team Suite 一起提供)包含检查代码圈复杂度的指标,并在该数字超过特定阈值时引发构建错误(或警告)。
我不知道,但可能值得检查一下这个数字是否可以根据您的要求进行配置。然后,您可以修改构建过程,以便在签入某些内容时运行代码分析。
请参阅语义设计 C# 指标工具,了解可计算完整文件和所有合理细分(方法、类等)的各种标准指标值的工具。
输出是一个 XML 文档,但使用 XML 阅读器从中提取所需的值应该很简单。