【问题标题】:How to catch System.exit() code within a huge Java project?如何在一个巨大的 Java 项目中捕获 System.exit() 代码?
【发布时间】:2012-01-24 16:00:22
【问题描述】:

我正在进入一个需要一些自动审查工具的项目。上周我们在导致应用服务器宕机的代码中发现了一些 System.exit()

FindBugs 似乎没有捕捉到System.exit()。是否有任何其他工具可以捕获 System.exit() 以及我可以从 eclipse 运行?

【问题讨论】:

  • @Tom,这将处理低垂的果实,但它不会通过反射捕获任何调用。此外,您还需要检查Runtime.getRuntime().exit(int)
  • Eclipse 也可以搜索方法,但这也无助于反射。
  • @Dilum Ranatunga 当然,您可以使用其他一些模式来查找错误代码。值得注意的是 Runtime.getRuntimejava.lang.reflect

标签: java findbugs system.exit


【解决方案1】:

如何设置一个安全管理器来阻止任何未列入白名单的对象调用System.exit()?我想您的应用程序服务器有一个安全管理器;查看安全策略。如果您要推出自己的产品,请查看checkExit(...)

【讨论】:

    【解决方案2】:

    除了 findbugs 之外,您是否考虑过使用 pmd? PMD 将 java 代码“编译”为 xml 并针对它运行 xpath 查询。

    例如:

    //变量声明器 [父::字段声明] [../类型/参考类型 /ClassOrInterfaceType[@Image='SimpleDateFormat'] 和 ..[@Static = 'true'] ]

    是识别静态定义的 SimpleDateFormat 对象的规则(可以在线程不安全的方式中使用的东西)。

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多