问题标签 [code-metrics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
language-agnostic - 什么是(或应该是)虚函数调用的圈复杂度?
圈复杂度为理解给定函数的难易程度或包含错误的潜力提供了一个粗略的衡量标准。在我读过的实现中,通常所有基本的控制流构造(if、case、while、for 等)都会将函数的复杂度增加 1。在我看来,圈复杂度旨在确定“通过程序源代码的线性独立路径的数量”虚拟函数调用也应该增加函数的圈复杂度,因为在运行时将调用哪个实现的模糊性(调用在路径中创建另一个分支执行)。
但是,如果函数包含等效的 switch 语句(每个“case”关键字一个点,实现相关虚函数的层次结构中的每个类一个 case 关键字),对函数进行相同的惩罚,感觉过于苛刻,因为虚函数调用通常被认为是更好的编程实践。
虚函数调用的圈复杂度成本应该是多少?我不确定我的推理是反对将圈复杂度作为度量的效用,还是反对使用虚函数或不同的东西。
编辑:在人们的回应之后,我意识到它不应该增加圈复杂性,因为我们可以认为虚函数调用等同于对包含大量 switch 语句的全局函数的调用。即使该函数会得到一个坏分数,它在程序中只存在一次,而直接用 switch 语句替换每个虚拟函数调用会导致多次成本。
c# - C# 如何从 VS2008 代码指标中排除生成的代码?
如何从 Visual Studio 2008 代码指标中排除生成的代码,如 Windows 窗体设计器相关代码?
我一直在挖掘,但我没有找到任何解决方案。DebuggerHidden
并且DebuggerNonUserCode
没有效果。
refactoring - 你觉得圈复杂度是一个有用的衡量标准吗?
我一直在尝试测量大型代码库的圈复杂度。
圈复杂度是通过程序源代码的线性独立路径的数量,并且有许多免费工具可供您选择的语言。
结果很有趣,但并不令人惊讶。也就是说,我知道最毛茸茸的部分实际上是最复杂的(评分> 50)。但是我发现有用的是每个方法都分配了一个具体的“坏”数字,作为我在决定从哪里开始重构时可以指出的东西。
你使用圈复杂度吗?你发现的最复杂的代码是什么?
vb6 - 准确访问 VB6 限制
尽管它过时而痛苦 - 我在一家继续积极使用 VB6 进行大型项目的公司工作。事实上,18 个月前我们遇到了 32k 标识符的限制。
不愿意放弃大型代码库并在 .NET 中重写所有内容,我们将应用程序分解为一个主可执行文件和几个支持 DLL 文件。本周我们再次遇到了 32k 的限制。
我们遇到的问题是,我们找不到任何工具可以告诉我们源使用了多少唯一标识符。我们没有准确的方法来衡量我们的努力如何减少标识符的数量,或者我们在达到极限之前有多接近极限。
有谁知道一个工具可以扫描项目的源代码并返回一些准确的指标和统计数据?
code-metrics - 如何获得可维护性指标?
如何使用 cql 创建可维护性索引?NDepend 是否计算这个数字?
谢谢!
亚历杭德拉
language-agnostic - 衡量成功重构的指标
是否有衡量代码重构的客观指标?
在重构之前和之后运行 findbugs、CRAP 或 checkstyle 是否是检查代码是否真正得到改进而不是仅仅改变的有用方法?
我正在寻找可以确定和测试的指标,以帮助改进代码审查过程。
visual-studio - 如何在 Visual Studio 中显示我的项目包含多少行代码?
如何在 Visual Studio 2008 Professional SP1 中显示代码指标窗口?我正在查看我的项目用于学校的总代码行数,但我找不到。
帮助文件说去查看->其他窗口->代码指标,但是这个选项对我不可用。我还尝试在解决方案资源管理器中右键单击该项目以查看是否有选项但没有。
这个功能的神话独角兽在哪里?如果 Pro 版本没有此功能,是否有人找到一种简单的外部方法来自动计算所有 .cs 文件中的行数?
language-agnostic - 使用 LOC 确定项目规模
需要多少行代码 (LOC) 才能被视为一个大型项目?只写一个人怎么样?
我知道这个指标是有问题的,但是对于单个开发人员来说,1k 和 10k LOC 之间存在显着差异。我通常使用空间来提高可读性,尤其是对于 SQL 语句,并且为了维护目的,我尝试减少 LOC 的数量,以尽可能多地遵循最佳实践。
比如我今天修改的代码创建了一个统一的diff,超过1k LOC(包括注释和空行)。“修改后的 LOC”是一个更好的指标吗?我有~2k LOC,所以我修改了 1k 令人惊讶。我猜重写既是删除又是添加,这会使统计数据加倍。
c++ - C++ 的代码指标和警告
我有一个用 C++ 编写的非常新的代码库。我已经开始看到项目中出现了一些不好的做法(具有 1000 多行代码的类文件、具有大量参数的函数……)。
我想立即停止使用一些自动化工具,这些工具可以连接到构建中并检查不良的编码实践。您对此类工具有什么建议?我对指标感兴趣,但对一种风格的 lint 更感兴趣,它会突出显示具有 37 个参数的函数。
architecture - 什么是抽象与不稳定性图?
我最近使用了 NDepend,它对我的 .net 程序集和相关 pdb 产生了很好的报告。
我在报告中发现的最有趣的事情是抽象性与不稳定性图。我想详细了解这一点,我阅读了他们的文档和在线指标,但这只能在一定程度上有所帮助。
首先,我希望了解如何正确评估图形以及稳定控制抽象性的技术。
这里有一篇非常好的文章对此进行了讨论,但除此之外我还需要“我如何控制它?[稳定地控制抽象性]'