SONAR违规IllegalType,为什么修复它很重要?

时间:2013-11-25 14:34:57

标签: java sonarqube rules

我在SONAR中注意到我的java代码中有一个名为IllegalType的违规。我找了这个,在Checkstyle中解释了这个:

  

检查特定类是否从未用作变量声明,返回值或参数中的类型。包括一个模式检查,默认情况下不允许抽象类。

     

理由:帮助减少具体课程的耦合。另外,抽象类应该被认为是接口的便利基类实现,因此不是类型本身。

但我不明白为什么这是我的代码中的问题。如果有人能够更好地解释我,也许有一个例子可能会很棒!谢谢。

2 个答案:

答案 0 :(得分:1)

Aaron Digulla在评论中说的是一个很好的做法。但是我也发现这个IllegalType问题与我自己的抽象类(而不是接口)在我看来并不是很清楚。我理解使用intefaces insteaf类的好处,而且我也理解抽象类是部分类(更多的是类而不是接口)但是我没有看到这个规则的好处,因为我可以找到我的情况可以返回一个具体的类(没有抽象),它是我实际返回的超类。

答案 1 :(得分:0)

并非Sonar发现的所有违规行为都适用于所有人。检查IllegalTypedocs)会尝试确保您不会使用大多数开发人员认为“破坏”的类,例如Vector(请改用ArrayList)。

不应将其他类用作返回类型。始终返回List而不是ArrayListSet而不是HashSetMap而不是HashMap - 这样,您的代码的消费者就不会知道有关实施的任何不必要的细节。如果您发现需要在方法中将HashMap替换为TreeMap(反之亦然),那么如果您不必更改所有位置,那么这将更加简单调用。

通常情况下,检查不是问题(您的代码有效),但修复这些问题将使您的代码在将来更容易维护。