问题标签 [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.
metrics - 显示 SLOC 和 SLOC 修改、添加、删除的 Linux 工具
我目前正在使用 SLOCCOUNT 工具来获取代码库的源代码行 (SLOC)。
但是,它不支持比较两个版本的代码库然后报告:
- 代码行 (LOC) 已修改
- 已删除 LOC
- 已添加 LOC
谁能建议一个基于 linux(最好是免费)的工具来做到这一点?
linq - 优化或“调整”LINQ 表达式的最佳方法是什么?
在构造 LINQ 表达式(对我来说,是 linq to objects)时,有很多方法可以完成某事,有些方法比其他方法好得多、效率高。
- 有没有“调整”或优化这些表达式的好方法?
- 人们使用哪些基本指标,您如何收集它们?
- 有没有办法获得“总迭代次数”计数或其他一些指标,您可以“知道”越低意味着越好?
编辑
感谢理查德/乔恩的回答。
看起来我真正想要的是一种为 LINQ 表达式获取简单操作计数“OCount”的方法,尽管我不确定 LINQ 中是否存在允许它的钩子。假设我有一个特定机器硬件(SLA)的目标性能水平。理想情况下,我会添加一个单元测试来确认通过该查询移动的典型数据将在分配的时间内(来自 SLA)处理。问题是这将在构建服务器/开发人员机器/等上运行。这可能与 SLA 的机器硬件几乎没有相似之处。所以我的想法是,我将为表达式确定一个可接受的最大“OCount”,知道如果 OCount 小于 X,它肯定会在目标“典型”硬件上在 SLA 下提供可接受的性能。如果 OCount 超过此阈值,构建/单元测试会产生警告。理想情况下,我想要这样的东西(伪代码):
其中 results.OCount 只会给我生成结果集所需的总迭代次数 (n)。
为什么我会喜欢这个??
好吧,即使是大小适中的 LINQ 表达式,由于增加了整体操作数,微小的更改/添加也会对性能产生巨大影响。应用程序代码仍然会通过所有单元测试,因为它仍然会产生正确的结果,但在部署时运行缓慢。
另一个原因是简单的学习。如果你做某事并且 OCount 上升或下降一个数量级,那么你就会学到一些东西。
编辑#2 我也会提出一个潜在的答案。这不是我的,它来自Cameron MacFarland,来自我问的另一个问题,它产生了这个问题。事实证明,我认为这个问题的答案可以在单元测试环境中工作,就像我在第一次编辑这个问题时描述的那样。
它的本质是在单元测试夹具中创建测试数据集,您按照此答案中概述的方式将其输入 LINQ 表达式,然后将迭代计数相加并与最大允许迭代计数进行比较。
在这里查看卡梅伦的答案
metrics - 编写规范是否值得花时间计算哪些指标?
如果为新的编程项目编写规范值得这样做并花费时间(和金钱),那么使用哪些指标以及如何进行计算?
c++ - 用于 C++ 的 Visual Studio 代码指标插件
是否有用于 C++ 代码度量的 VS2008 插件?我有 Team System,但它不适用于非 .NET 代码。我尝试了 studioTools,但它只是冻结了。那么,有人知道真正有效的吗?
version-control - bitrot 有任何可接受的尺寸吗?
每个现代源代码控制系统都可以切分程序的历史。有许多工具可以静态和动态地分析代码。什么样的数学公式可以让我将文件中的活动量与该软件的部署数量相结合?我们发现即使一个程序完成了所有的单元测试,它也需要比我们在升级时预期的更多的工作。这种类型的测量应该是可能的,但是坐下来思考它的单位让我难住了。
更新:如果某些东西被发送到测试机器,我可以看到它的标记不那么烂。如果某些东西被发送到所有测试盒,我可以看到它得到一个新的标记。如果有东西投入生产,我可以点头并降低它的bitrot分数。如果它的文件中有很多活动并且它永远不会被发送到任何地方,我就会把它搞砸。不要专注于代码假设我需要的任何数据都在手边。
什么样的提交分析(提交评论(如下所述)或提交之间的时间)是适用的公平数据?
更新: 我认为维度分析可能只是基于年龄。相对来说就困难一些了。旧代码很烂。每行代码的平均年龄仍然只是时间的度量。较大的源模块是否比更小、更复杂的源模块腐烂得更快?
更新代码覆盖率以行为单位。根据定义,经常执行的代码必须比从未执行的代码更糟糕。要准确测量 bitrot,您需要覆盖分析来充当阻尼器。
metrics - 跟踪和预测质量水平
人们推荐哪些技术来跟踪新程序的质量水平?他们是否会采用定义不明确的术语(例如“质量水平”),对其进行量化然后进行预测?目前我使用错误率和 S 曲线,但我正在寻找其他方法来评估、估计和预测质量水平。
refactoring - 你觉得圈复杂度是一个有用的衡量标准吗?
我一直在尝试测量大型代码库的圈复杂度。
圈复杂度是通过程序源代码的线性独立路径的数量,并且有许多免费工具可供您选择的语言。
结果很有趣,但并不令人惊讶。也就是说,我知道最毛茸茸的部分实际上是最复杂的(评分> 50)。但是我发现有用的是每个方法都分配了一个具体的“坏”数字,作为我在决定从哪里开始重构时可以指出的东西。
你使用圈复杂度吗?你发现的最复杂的代码是什么?
metrics - 错误指标——我可以从我的错误数据库中得到什么?
作为内部研究项目的一部分,我们正在尝试从 Bugzilla 数据库中收集一些指标;我们已经找到了一个工具来帮助我们从中收集一些指标(BugzillaMetrics),但我们现在问自己应该收集哪些指标?
现在,这就是为什么我想问你:
**
您收集了哪些关于错误的指标?
**
在我们的办公室,团队很小(2 到 5 名开发人员),我们考虑了每个开发人员的错误、每个开发冲刺、每个类别的错误(GUI、业务逻辑、数据库)等指标,但我们想听听其他一些想法。
提前感谢=)
web-applications - 程序大小的度量
我被要求给出一个关于公司应用程序大小的度量标准。有问题的应用程序是一个基于 Web 的应用程序,我不确定如何量化它的大小。明显但无用的指标是代码行数、文件数量等。有哪些建议的方法可以确定应用程序的大小,从而提供真正的意义?
申请注意事项:
- 基于 ASP.NET Web 窗体的 C# 应用程序
- 分层架构
- 所有数据库交互都通过存储过程