从应用程序中删除死代码的最佳方法是什么? [关闭]

2024-04-30

我经常觉得,在多次迭代我的代码之后,我留下了一些函数、类或其他代码行,这些代码在以前的版本中有意义,但对于新版本来说并不是很有用。我知道探查器可以告诉您在运行测试用例时调用了代码的哪一部分?但是,如何确定代码的哪一部分从未被调用来删除它,以便剩下的内容更具可读性呢?例如,是否有一种快速方法可以知道代码中的哪些函数没有从任何地方调用并且可以安全地删除。对于小型代码库来说,这听起来可能是一个微不足道的问题,但是当您的代码库逐年增长时,这将成为一个重要且不那么微不足道的问题。

总结一下这个问题,对于不同的语言,删除死代码的最佳方法是什么?是否有任何与语言无关的解决方案或策略?或者说每种语言都提供了识别死代码的工具。

我们通常使用 Java、Python 或 Objective-C 进行编程。


您正在寻找的术语是“代码覆盖率”,并且有各种工具 http://www.google.com/search?q=java+code+coverage这将生成该信息。您必须确保通过代码执行所有可能的路径,以便能够使用这样的工具检测“死代码”,而这只有通过really广泛的测试集。

大多数编译器都有一定程度的死代码检测,但这只检测不可能被调用的代码,而不是由于程序逻辑等而永远不会被调用的代码。

edit:

特别针对Python:如何找到Python代码中未使用的函数? https://stackoverflow.com/questions/693070/how-can-you-find-unused-functions-in-python-code

对于Java:如何查找java项目中未使用/死的代码 https://stackoverflow.com/questions/162551/how-to-find-unused-dead-code-in-java-projects, Java:消除死代码 https://stackoverflow.com/questions/4756462/java-dead-code-elimination

对于 Objective-C:Xcode——在项目中查找死方法 https://stackoverflow.com/questions/4764001/xcode-finding-dead-methods-in-a-project, 清理 Objective-C 代码 https://stackoverflow.com/questions/1329013/cleaning-up-objective-c-code

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从应用程序中删除死代码的最佳方法是什么? [关闭] 的相关文章

  • 如何定义软件的版本号?

    确定软件或组件应使用的版本号的最佳方法是什么 设置版本号有通用规则吗 我很确定这是一个基本问题 但搜索一段时间后我没有找到任何有用的东西 微软有一个约定 major minor revision build 或关注Jeff 的版本控制系统
  • 日语/字符的编程技巧[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个想法 可以编写一些网络应用程序来帮助我 也许还有其他人 更好地学习日语 因为我正在学习日语 我的问题是该网站主要是英文的 所以
  • 什么是自以为是的软件?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我经常看到人们说某些软件 非常固执己见 或者微软倾向于编写 不固执己见 的框架 这实际上意味着
  • 封装和抽象之间的区别

    我今天去面试了 我有一个问题来自OOP 关于之间的区别封装 抽象 我据我所知回答说封装基本上将数据成员和成员函数绑定到一个称为Class 然而抽象基本上是为了隐藏实现的复杂性并为用户提供方便的访问 我以为她会同意我的回答 但她质疑 如果两者
  • 空指针与悬挂指针

    空指针和悬空指针之间有有意义的区别吗 看起来这两个术语都用于表示不指向任何内容的指针 是一个悬空指针的想法used引用某些东西 但现在没有 其中空指针只是一个不引用任何东西的指针 无论它过去指向什么 指针术语 悬空 或野 指针 指向某处的指
  • 代码高尔夫:弗罗贝尼乌斯数

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 编写最短的程序来计算给定正数集的弗罗贝尼乌斯数 弗罗贝尼乌斯数是不能写成集合中数字的正倍数之和
  • 为什么矢量化通常比循环更快?

    为什么在执行操作的硬件的最低级别和所涉及的一般底层操作 即 运行代码时所有编程语言的实际实现通用的事情 矢量化通常比循环快得多 计算机在循环时会做什么而在使用矢量化时不会做什么 我指的是计算机执行的实际计算 而不是程序员编写的计算 或者它有
  • 如何抑制自己重写一切的强烈冲动?

    Setup 您是否有过这样的经历 在一段代码中进行看似简单的更改 然后意识到您刚刚踏入了一片值得认真关注的荒地 这通常会由官方跟进吓坏了那一刻 重写眼前一切的压倒性感觉开始蔓延 值得注意的是 这些糟糕的代码不一定来自其他人 因为它可能确实是
  • 两个平面之间的交线

    如何找到两个平面之间的交线 我知道数学思想 并且我做了平面法向量之间的叉积 但如何以编程方式从结果向量中获取行 平面的方程为ax by cz d 0 其中 a b c 是平面的法线 d 是到原点的距离 这意味着满足该方程的每个点 x y z
  • 在 OAuth2.0 中使用 Facebook 访问令牌作为资源所有者凭据

    OAuth 2 0 规范定义了资源所有者密码凭证授予类型 https datatracker ietf org doc html draft ietf oauth v2 26 section 4 3 它允许直接使用资源所有者密码凭据 即用户
  • 如何检测(心电图)波的模式?

    我正在尝试读取心电图图像并检测其中的每个主波 P 波 QRS 波群和 T 波 我可以读取图像并获得向量 例如 4 2 4 4 4 9 4 7 我需要一种算法来遍历这个向量并检测每个波何时开始和结束 一个例子 如果它们总是具有相同的大小 或者
  • 基于正方形瓷砖直角三角形象限的坐标系中的边界框

    我正在为游戏创建一个基于图块的 2D 地形系统 然而 我还使用游戏中的坐标 需要能够将边界框映射到 图块坐标 中 并点击边界框接触的每个图块 不用担心 有一个 kd 树和所有工作 美好的 使用定点 真实世界 坐标 我可以将每个图块计为 2
  • 链表、数组和硬件内存缓存

    虽然之前有人问过关于链表与数组的问题 但答案大多归结为我们大多数人在某些时候可能已经学到的东西 列表擅长插入和删除 数组擅长随机访问 现在 像 Bjarne Stroustrup 这样受人尊敬的人已经argued https www you
  • 导致堆栈溢出的最短代码是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Google 文件系统中的块大小问题

    谷歌文件系统论文 http labs google com papers gfs html 块大小是关键设计之一 参数 我们选择了64MB 这比典型文件大得多 系统块大小 每个块 副本存储为普通 Linux 文件放在 chunkserver
  • 哪种数据聚类算法适合检测时间序列事件中未知数量的聚类?

    这是我的场景 考虑在不同地点和时间发生的一组事件 例如 考虑有人在高空记录暴风雨期间城市中的雷击 就我的目的而言 闪电是瞬时的 只能击中某些位置 例如高层建筑 还可以想象每次雷击都有一个唯一的 ID 以便以后可以参考该雷击 这个城市大约有1
  • 编程语言语法中尾随逗号的历史

    许多编程语言允许在其语法中在列表中的最后一项后面使用尾随逗号 据说这样做是为了简化自动代码生成 这是可以理解的 作为示例 以下是 Java 中完全合法的数组初始化 JLS 10 6 数组初始值设定项 http java sun com do
  • 需要帮助解决 Project Euler 问题 200 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试制定一个算法来解决 We
  • 生成所有多集大小为 n 的分区的算法

    我一直在试图找出一种方法来生成多重集的所有不同的大小为 n 的分区 但到目前为止却空手而归 首先让我展示一下我想要实现的目标 假设我们有一个输入向量uint32 t std vector
  • 什么是拉姆达?

    有人可以很好地描述什么是 Lambda 吗 我们为它们设置了一个标签 它们涉及 C 问题的秘密 但我还没有找到一个很好的定义和解释来解释它们是什么 闭包 lambda 和匿名函数不一定是同一件事 匿名函数是任何没有 或者至少不需要 自己名称

随机推荐

  • 内联网应用程序是否需要 SSL 证书

    我的应用程序将使用 MSI 安装程序部署到用户的服务器 并且期望它将作为 Intranet 应用程序在其安全网络上运行 但是 由于我在整个网站上使用 HTTPS 我想知道如何获得有效的证书 我已经使用 MakeCert 生成了一个开发版本
  • BLE 广播帧和 BLE 信标帧有区别吗

    我正在接收EVT LE ADVERTISING REPORT来自 HCI 套接字 我想区分 BLE 信标和普通 BLE 设备 解析设备名称等 我有点困惑是否所有 BLE 设备都会发出信标或者它们是不同的 如果不同 那么它们的数据包格式如何
  • 按第二个值对二维数组进行排序

    好吧 假设我有一个像 z 1 d 3 e 2 这样的数组 如何按每个组成数组的第二个元素对该数组进行排序 这样我的数组就会如下所示 z 1 e 2 d 3 arr z 1 d 3 e 2 arr sort a b a 1 lt gt b 1
  • WCF 中的实例停用是什么?

    我最近接触到这个词Instance Deactivation a 那是什么 b 我们需要这个做什么 c 它在什么情况下有用 我正在寻找一个易于理解的简单答案 如果可能的话 可以使用一些伪代码 Thanks 当调用 WCF 方法时 它会传递给
  • “此时元素 li 上不允许使用属性 aria-expanded”

    我有以下代码 从这里 https www w3 org WAI tutorials menus examples appmenu div ul li File ul li New li ul li ul div
  • useSelector 常量在调度后不更新

    这里有一个代码沙盒 https codesandbox io s competent moon 9ehen getIDs 更新cells 然后需要initializeCells 但是 此更改在分派操作后不会反映出来 尽管如此 我还是可以看到
  • Javascript正则表达式替换多个组

    我正在尝试根据这样的正则表达式替换多个匹配的组 var paramRegex s w s w s w s s i should match group1 group2 group3 var emptyParam emptyParam rep
  • 为页面上的所有 AJAX 请求添加“钩子”

    我想知道是否可以 挂钩 每个 AJAX 请求 无论是即将发送的请求 还是事件上的请求 并执行操作 此时 我假设页面上还有其他第三方脚本 其中一些可能使用 jQuery 而另一些则不使用 这可能吗 注意 接受的答案不会产生实际的响应 因为它被
  • 如何获取日期时间格式的 Win32_OperatingSystem.LastBootUpTime

    我一直在尝试使用 Win32 OperatingSystem 类 WMI 获取 LastBootUpTime HRESULT hr pEnumerator gt Next WBEM INFINITE 1 pclsObj uReturn if
  • 错误org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义的名为“entityManagerFactory”的bean时出错

    我想将我的 java CRUD 应用程序与红色节点连接 但当我运行 Java 应用程序时 我总是收到此错误 我试图解决它 但我不能 这是错误 2022 05 10 11 33 43 959 INFO 12192 restartedMain
  • Knockout ObservableArray 不更新 HTML Foreach

    所以我有一个可以正常工作的 observablearray 但 UI 没有更新 我读过很多人遇到这种类型的问题 但我没有看到 所以 HTML 是 tbody tr td span class label label success Yup
  • 包含对 char(13) 不满意

    为什么不会SSMS为我处理这个脚本 DECLARE containsReturn AS CHAR 500 email protected cdn cgi l email protection email protected cdn cgi
  • 在 OSX 10.6 中以编程方式与连接的 iOS/iPod 进行交互

    我正在尝试开发一个简单的菜单栏应用程序 让我可以直观地看到所连接的 iPhone iPad 的充电状态 而无需启动 iTunes 经过长时间的搜索 我无法断定 Snow Leopard API 是否可以实现这一点 我的搜索引导我找到了一个在
  • 如何在 RHEL 上更新 git 版本?

    我刚刚在 GCP 上创建了一个新的 RHEL 虚拟机来在上面运行一些 Kubernetes 它上面没有安装任何 git I used yum包管理器在其上安装git 但它没有安装最新版本的git 当前版本 2 38 0 2022 年 10
  • MATLAB:涉及大数的计算

    如何在 MATLAB 中执行涉及大量数字的计算 举一个简单的例子 任意精度计算器将显示 1 120 132 370 260 约为 1 56 但 MATLAB 无法执行此类计算 power 120 132 factorial 370 fact
  • .NET 中的嵌套事务

    我怎样才能执行与此等效的操作 我的理解是 这对于 TransactionScopes 来说是不可能的 https stackoverflow com questions 2741988 nested child transactionsco
  • 什么是 ADO.NET?

    我编写了一些 Access 数据库并使用了一些轻型 VBA 并且有一个 OO 类 现在我正在编写一个 C 数据库应用程序 我已经安装并连接了 VS 和 System Data SQLite 并输入了我的表和列 但这就是我陷入困境的地方 我正
  • 如何在 $match 内的 mongodb 聚合查询中使用 $regex

    我正在尝试使用 regex http docs mongodb org manual reference operator regex within match http docs mongodb org manual reference
  • 具有动态参数的 Oracle Lag 函数

    我有一个具体的问题 我有一个包含无效值的表 我需要替换无效值 此处0 与之前的值大于0 困难是 使用更新或插入对我来说是不合适的 游标和更新就可以了 我唯一的方法是使用 Select 语句 当我使用lag col1 1 当情况发生时 我只得
  • 从应用程序中删除死代码的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我经常觉得 在多次迭代我的代码之后 我留下了一些函数 类或其他代码行 这些代码在以前的版本中有意义 但对于新版本来说并不是很有用 我知道探查器可