1

和之前的许多人一样,我IllegalArgumentException: Comparison method violates its general contract!认为我需要检查遗留代码以了解所有可能发生的情况。最好的方法是使用静态分析工具,它会遍历所有代码并检测可能的问题。


  1. TimSort 如何检测这些问题?
  2. 是否可以对代码进行静态分析并找到问题?
  3. 有没有这样的工具可用?也许作为已经存在的静态分析工具的规则?
4

1 回答 1

1

当它将两个运行合并在一起时,它将在合并阶段检测它们。通常它只是意味着你的比较函数没有遵循规则,比如两者a < b同时为真,或者从所有,和b < a中获取真值。a > bb > cc > a

我不知道有什么静态分析工具可以在这里有所帮助,但我不确定它是否需要。

最好的办法是只关注比较函数并确保它为各种数据集返回正确的值。实际上查找比较函数应该相对简单,只需在所有文件中搜索Comparator.

于 2013-06-26T03:51:49.713 回答