自动检测Java中存在潜在性能问题的循环

自动检测Java中存在潜在性能问题的循环,java,eclipse,performance,performance-testing,sonarqube,Java,Eclipse,Performance,Performance Testing,Sonarqube,考虑以下java代码: for (Entity entity : entities) { if(entity.getSubEntity().getField() == pField) { return entity.getAnotherField(); } } 如果实体包含大量条目,则此代码可能会在生产环境中导致性能问题。如果只使用小列表进行测试,那么测试可能不会发现问题 我知道为这个问题编写动态测试的可能性,但我正在寻找一种静态分析和发现这个问题的潜在实例的方法,而不必手动查看代

考虑以下java代码:

for (Entity entity : entities) {
  if(entity.getSubEntity().getField() == pField) {
  return entity.getAnotherField();
  }
}
如果
实体
包含大量条目,则此代码可能会在生产环境中导致性能问题。如果只使用小列表进行测试,那么测试可能不会发现问题

我知道为这个问题编写动态测试的可能性,但我正在寻找一种静态分析和发现这个问题的潜在实例的方法,而不必手动查看代码库中的每个for循环

我的问题是,如何在我庞大的代码库中自动检测这个问题的其他实例

eclipse中有内置或插件机制吗


对于这个问题,sonarqube有规定吗?有可能编写自定义规则吗?

没有自动工具来查找像这样的“问题”,因为它不是问题:从代码中的数千个循环中,只有一个或两个最终可能会导致问题,这取决于您处理的数据


因此,您需要运行代码,听取反馈,并在确定瓶颈后对代码运行探查器。手动。

没有自动工具来查找像这样的“问题”,因为它不是一个问题:从代码中的数千个循环中,只有一个或两个最终可能会导致问题,这取决于您的流程所使用的数据


因此,您需要运行代码,听取反馈,并在确定瓶颈后对代码运行探查器。手动。

没有自动工具来查找像这样的“问题”,因为它不是一个问题:从代码中的数千个循环中,只有一个或两个最终可能会导致问题,这取决于您的流程所使用的数据


因此,您需要运行代码,听取反馈,并在确定瓶颈后对代码运行探查器。手动。

没有自动工具来查找像这样的“问题”,因为它不是一个问题:从代码中的数千个循环中,只有一个或两个最终可能会导致问题,这取决于您的流程所使用的数据



因此,您需要运行代码,听取反馈,并在确定瓶颈后对代码运行探查器。手动。

不使用最大和最小允许输入进行测试与不测试程序中的某些主要流相当。如果没有硬性的尺寸上限,请使用与您当前期望的最大尺寸相当的输入进行测试,并定期查看是否需要将其变大。您可能会遇到功能性错误以及性能问题。通常,
for
s在那里很臭,JPA和类似的做法是指定一个中心
findthatpfield
查询。实践最佳实践和同行评议可能会有所帮助。不要忘记创建人工测试数据。适当的集成/单元测试就可以了。通过单元测试开发。我认为对这个案例进行单元测试是个好主意。我也在寻找一个静态分析,因为我想确定代码库中现有的问题,而这些问题目前还没有开发出来。不使用最大和最小的允许输入进行测试与不测试程序中的一些主要流程相当。如果没有硬性的尺寸上限,请使用与您当前期望的最大尺寸相当的输入进行测试,并定期查看是否需要将其变大。您可能会遇到功能性错误以及性能问题。通常,
for
s在那里很臭,JPA和类似的做法是指定一个中心
findthatpfield
查询。实践最佳实践和同行评议可能会有所帮助。不要忘记创建人工测试数据。适当的集成/单元测试就可以了。通过单元测试开发。我认为对这个案例进行单元测试是个好主意。我也在寻找一个静态分析,因为我想确定代码库中现有的问题,而这些问题目前还没有开发出来。不使用最大和最小的允许输入进行测试与不测试程序中的一些主要流程相当。如果没有硬性的尺寸上限,请使用与您当前期望的最大尺寸相当的输入进行测试,并定期查看是否需要将其变大。您可能会遇到功能性错误以及性能问题。通常,
for
s在那里很臭,JPA和类似的做法是指定一个中心
findthatpfield
查询。实践最佳实践和同行评议可能会有所帮助。不要忘记创建人工测试数据。适当的集成/单元测试就可以了。通过单元测试开发。我认为对这个案例进行单元测试是个好主意。我也在寻找一个静态分析,因为我想确定代码库中现有的问题,而这些问题目前还没有开发出来。不使用最大和最小的允许输入进行测试与不测试程序中的一些主要流程相当。如果没有硬性的尺寸上限,请使用与您当前期望的最大尺寸相当的输入进行测试,并定期查看是否需要将其变大。您可能会遇到功能性错误以及性能问题。通常,
for
s在那里很臭,JPA和类似的做法是指定一个中心
findthatpfield
查询。实践最佳实践和同行评议可能会有所帮助。不要忘记创建人工测试数据。适当的集成/单元测试就可以了。通过单元测试开发。我认为对这个案例进行单元测试是个好主意。我也在寻找静态分析,因为我想找出代码库中现有的问题,这些问题目前还没有开发出来。你的回答让我想:如果我有一个静态分析器,如果在循环中访问,则可能导致性能问题的实体列表,以及在我的代码库中查找每个包含实体的循环的自定义规则…静态分析器不查看数据结构,因此它们不会