问题标签 [dead-code]
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.
.net - .NET 跨多个解决方案查找死代码
我们的产品包含约 15 个解决方案,每个解决方案都有多个项目。
问题很简单:哪个工具可以让我们在整个代码库中搜索死代码?
在单个解决方案中搜索很容易(关于那个解决方案的很多答案)。
但是,如何确定解决方案 AlphaSol 的项目 AlphaProj 中的“public void Foo()”,它在 AlphaSol 本身中没有使用,实际上是否在例如 BetaSol 中使用?
c - 通过静态分析查找 C 项目中未使用的函数
我正在尝试对 C 项目运行静态分析以识别死代码,即从未调用过的函数或代码行。我可以使用适用于 Windows 的 Visual Studio .Net 或使用适用于 Linux 的 gcc 来构建这个项目。我一直在尝试找到一些可以为我做到这一点的合理工具,但到目前为止我还没有成功。我已经阅读了有关 Stack Overflow 的相关问题,即this和this,并且我尝试-Wunreachable-code
与 gcc 一起使用,但 gcc 中的输出不是很有帮助。它具有以下格式
但是当我查看第 666 行时my_socket.c
,它实际上位于从函数 my_sockNtoH32() 调用的另一个函数中,并且不会针对此特定实例执行,但会在从其他一些函数调用时执行。
我需要的是找到永远不会执行的代码。有人可以帮忙吗?
PS:我无法说服管理层为这项任务购买工具,所以请坚持使用免费/开源工具。
javascript - 如何从 Javascript 中删除死代码
我正在尝试从我的项目中删除未使用的功能。由于它有数千行,这需要很长时间。
代码覆盖工具可能会建议未在给定测试用例中使用的功能,但仅依赖于此可能很危险。
有没有其他工具可以帮助解决这个问题?
java - 使用 AspectJ 在 Java 中查找未使用的代码
我有一个在大型 Java 项目中查找未使用(“死”)方法的想法,但我需要帮助来推导实现。
- 使用 AspectJ 为项目包中的所有方法添加“之前”方面。方面将简单地记录(?)该方法已被执行。
- 我编译了项目包中所有类/方法的列表(可能使用服务定位器/反射)。
- 建议的代码经过完整的回归测试。理想情况下,我也想将其投入生产一段时间(如果可以找到合适的性能解决方案)。
- 比较已执行的方法(步骤 1)和可用方法(步骤 2)的列表,得出所有从未调用过的方法(即死代码)的完整列表。
由于第 2 步和第 4 步可以离线进行,我真的只是在寻求第 1 步的帮助。
具体来说,如何记录方法何时执行?我想如果我尝试任何类型的内存存储,我很快就会遇到 OutOfMemoryErrors。同样,如果我将数据存储在数据库中/文件系统上,调用量可能会导致严重的性能问题。有没有人做过类似的事情?任何建议/建议表示赞赏。
ios - Xcode anaylser 的死代码
我想分析我的项目,xcode 分析器在我的 rootcontroller Xcode 中找到一些死代码告诉我:
有人可以解释一下如何清理该代码,谢谢....
这是我的rootcontroller.m
java - 如何检测企业 Java 项目(Java + JSP + Javascript)中的死代码?
有谁知道在 Java EE 项目中检测死代码的工具?
我已经研究了很多对纯 Java 项目做得很好的工具,但似乎没有什么能真正处理包括 JSP 和 Javascript 文件的项目。例如,检测到某个 Java 方法正在使用中,因为它是从 JSP 调用的,或者检测到某个以前用作 AJAX 请求的 JSP 文件不再从任何 Javascript 调用。
谢谢。
c - 什么是AST、CFG、CLANG,我们如何在死码去除算法中使用它?
我即将与我们的团队一起使用 C 语言为在线活动编写一个死代码删除算法。
要求是......
- 读取一个 C 程序源文件,其中有多种形式的死代码。
- 我们的输出应该是一个文件,它没有任何死代码。
在上网时,我们遇到了 SO 链接......
在看到这些链接之前,我们有一个基本的想法......使用普通文件流逐行读取输入 C 文件并存储在字符串数组中。然后分析这些字符串并确定非常基本的死代码,如 if(0) 和 if(1) 等。并制作一个堆栈,以维护括号。还有更多...
但这有一个很大的问题,这个想法将导致我们更多地使用字符串操作而不是删除死代码。
但是在看到这些链接之后......我们开始了解 Clang 库、抽象语法树、控制流图等......
但我们对这些库和那些概念非常陌生。我们知道它们是用来解析 C 代码的。
因此,我们需要一些关于这些 AST、CFG 的基本概念和一些基本指导,解释我们如何在代码中使用它们......
我们可以将那个 clang 库包含为像 math.h 这样的普通库吗?
我们在哪里可以下载那个库?
我们可以在 Windows 中使用那些 Clang 库吗?
c - 我更简单的死代码去除器
我正在以一种非常简单的方式刺激死代码去除器。
为此,我的想法是,
步骤1:逐行读取输入的C程序并将其存储在双向链表或数组中。(因为删除和插入比文件操作更容易)。
怀疑:我的方法正确吗?如果是这样,如何最小化每次遍历链表。
第 2 步:将并行分析读取的字符串,并创建表以维护变量名称及其详细信息、函数及其调用等,
第 3 步:将对变量表中的每个条目进行搜索,并将变量替换为其当时的值(因为它有)。(例如)
但是在这样的情况下..
在这里,'i' 不会被替换,因为它取决于另一个变量。'a' 不会被替换,因为它取决于用户输入。
怀疑:如果用户输入的是 if(5*5+6){print hello;} ,那肯定是不必要的检查。我如何解决这个表达式以将代码简化为 { print hello; }
第 4 步:将在字符串中搜索 if(0)、while(0) 等,并使用堆栈移除操作块。if(0){//这将被删除*/}
第 5 步:(例如)函数 foo(){/**/} ... if(0) foo(); ...,一旦删除了所有死代码,就会检查函数表中 foo() 的条目,以获取它在代码中被引用的次数。如果为 0,则必须使用相同的堆栈方法删除该函数。
第 6 步:在其余函数中,除了“}”之外,return 语句(如果有)下面的行被删除。这种移除一直持续到函数结束。函数的结尾使用堆栈来标识。
第 7 步:我假设我的无死代码现在已经准备好了。将链表或数组存储在输出文件中。
我的问题是.. 1.我的想法是否有意义?还是可以实施?我该如何改进这个算法?
2.当我试图实现这个想法时,我必须更多地处理字符串操作而不是删除死代码。有什么方法可以减少此算法中的字符串操作。
iphone - Xcode 在构建应用程序时是否编译了未使用的类?
如果某些东西没有在 C++ 中使用,那么它根本就不会被编译。iPhone也一样吗?如果我编译一个程序并且有未使用的类或其他东西,它会被编译还是忽略?
java - java while循环中无法访问的语句
在 Eclipse 中查找“死代码”线程时出现 死代码警告
我尝试了以下简单的java代码:
正确引发编译时错误
我稍微调整了代码:
它编译得很好。
有什么原因,为什么编译得很好?
从逻辑上讲,两者都应该导致无限循环,并且都应该导致编译时错误。
难道我做错了什么?