do not check array and class starts with java. or javax.
This commit is contained in:
骏烈
2017-11-01 20:04:22 +08:00
parent bce928dc04
commit 0cc98d1099
2 changed files with 16 additions and 8 deletions

View File

@@ -86,8 +86,12 @@ class MapOrSetKeyShouldOverrideHashCodeEqualsRule : AbstractEclipseRule() {
} }
private fun isOverrideEqualsAndHashCode(genericType: ITypeBinding): Boolean { private fun isOverrideEqualsAndHashCode(genericType: ITypeBinding): Boolean {
// skip enum val skip = genericType.isEnum || genericType.isInterface || genericType.isArray
if (genericType.isEnum || genericType.isInterface || genericType.isTypeVariable || genericType.isWildcardType) { || genericType.isTypeVariable || genericType.isWildcardType
|| genericType.qualifiedName?.startsWith(skipJdkPackageJava) ?: false
|| genericType.qualifiedName?.startsWith(skipJdkPackageJavax) ?: false
// skip
if (skip) {
return true return true
} }

View File

@@ -171,16 +171,20 @@ class MapOrSetKeyShouldOverrideHashCodeEqualsInspection : BaseInspection, AliBas
companion object { companion object {
private val skipJdkPackageJava = "java."
private val skipJdkPackageJavax = "javax."
private fun redefineHashCodeEquals(psiType: PsiType): Boolean { private fun redefineHashCodeEquals(psiType: PsiType): Boolean {
if (psiType !is PsiClassType) { if (psiType !is PsiClassType) {
return true return true
} }
val psiClass = psiType.resolve() val psiClass = psiType.resolve() ?: return false
if (psiClass == null || psiClass.containingFile == null || psiClass is PsiTypeParameter val skip = psiClass.containingFile == null || psiClass is PsiTypeParameter
|| psiClass.isEnum || psiClass.isInterface) { || psiClass.isEnum || psiClass.isInterface
return true || psiClass.containingFile.fileType !is JavaFileType
} || psiClass.qualifiedName?.startsWith(skipJdkPackageJava) ?: false
if (psiClass.containingFile.fileType !is JavaFileType) { || psiClass.qualifiedName?.startsWith(skipJdkPackageJavax) ?: false
if (skip) {
return true return true
} }
val hashCodeMethods = psiClass.findMethodsByName(ObjectConstants.METHOD_NAME_HASHCODE, false) val hashCodeMethods = psiClass.findMethodsByName(ObjectConstants.METHOD_NAME_HASHCODE, false)