diff --git a/idea-plugin/p3c-common/src/main/java/icons/P3cIcons.java b/idea-plugin/p3c-common/src/main/java/icons/P3cIcons.java index 71a3d6a9df93b03c43195b23b7681bbd7fbce9c1..a4908c6774e8ec99748dd9dcd03a29883c172b52 100644 --- a/idea-plugin/p3c-common/src/main/java/icons/P3cIcons.java +++ b/idea-plugin/p3c-common/src/main/java/icons/P3cIcons.java @@ -23,11 +23,16 @@ import com.intellij.openapi.util.IconLoader; * @author caikang * @date 2016/12/28 */ -public interface P3cIcons { - Icon ANALYSIS_ACTION = IconLoader.getIcon("/icons/ali-ide-run.png"); +public final class P3cIcons { + private P3cIcons() { + throw new AssertionError("icons.P3cIcons" + + " instances for you!"); + } - Icon PROJECT_INSPECTION_ON = IconLoader.getIcon("/icons/qiyong.png"); - Icon PROJECT_INSPECTION_OFF = IconLoader.getIcon("/icons/tingyong.png"); - Icon LANGUAGE = IconLoader.getIcon("/icons/language.png"); - Icon ALIBABA = IconLoader.getIcon("/icons/alibaba.png"); + public static final Icon ANALYSIS_ACTION = IconLoader.getIcon("/icons/ali-ide-run.png"); + + public static final Icon PROJECT_INSPECTION_ON = IconLoader.getIcon("/icons/qiyong.png"); + public static final Icon PROJECT_INSPECTION_OFF = IconLoader.getIcon("/icons/tingyong.png"); + public static final Icon LANGUAGE = IconLoader.getIcon("/icons/language.png"); + public static final Icon ALIBABA = IconLoader.getIcon("/icons/alibaba.png"); } diff --git a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/action/AliInspectionAction.kt b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/action/AliInspectionAction.kt index 260a232e17eea8d9d3a3321fe01e7d0ca40d6bab..a3ddff9e41d9fb37770e068a877e9eb6abcd84f7 100644 --- a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/action/AliInspectionAction.kt +++ b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/action/AliInspectionAction.kt @@ -20,6 +20,7 @@ import com.alibaba.p3c.idea.compatible.inspection.Inspections import com.alibaba.p3c.idea.ep.InspectionActionExtensionPoint import com.alibaba.p3c.idea.i18n.P3cBundle import com.alibaba.p3c.idea.inspection.AliBaseInspection +import com.alibaba.p3c.idea.util.NumberConstants import com.beust.jcommander.internal.Lists import com.intellij.analysis.AnalysisScope import com.intellij.analysis.AnalysisUIOptions @@ -68,7 +69,7 @@ class AliInspectionAction : AnAction() { if (psiFile != null) { analysisScope = AnalysisScope(psiFile) projectDir = isBaseDir(psiFile.virtualFile, project) - } else if (virtualFiles != null && virtualFiles.size > com.alibaba.p3c.idea.NumberConstants.INTEGER_SIZE_OR_LENGTH_0) { + } else if (virtualFiles != null && virtualFiles.size > NumberConstants.INTEGER_SIZE_OR_LENGTH_0) { analysisScope = AnalysisScope(project, Lists.newArrayList(*virtualFiles)) projectDir = virtualFiles.any { isBaseDir(it, project) diff --git a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/compatible/inspection/Inspections.kt b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/compatible/inspection/Inspections.kt index 42d624dad34c001ace688795b6d46525c2b726a9..1c186c4959eb1e5c4b8d6ab88a9339e90e32b587 100644 --- a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/compatible/inspection/Inspections.kt +++ b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/compatible/inspection/Inspections.kt @@ -15,9 +15,11 @@ */ package com.alibaba.p3c.idea.compatible.inspection +import com.google.common.base.Splitter import com.intellij.codeInspection.ex.InspectionProfileImpl import com.intellij.codeInspection.ex.InspectionToolWrapper import com.intellij.codeInspection.ex.ScopeToolState +import com.intellij.codeInspection.javaDoc.JavaDocLocalInspection import com.intellij.openapi.project.Project /** @@ -32,6 +34,24 @@ object Inspections { return getAllTools(project, profile).filter(filter) } + fun addCustomTag(project: Project, tag: String) { + val profile = InspectionProfileService.getProjectInspectionProfile(project) + val javaDocLocalInspection = profile.getInspectionTool("JavaDoc", project)?.tool + as? JavaDocLocalInspection ?: return + if (javaDocLocalInspection.myAdditionalJavadocTags.isEmpty()) { + javaDocLocalInspection.myAdditionalJavadocTags = tag + return + } + + val tags = Splitter.on(',').splitToList(javaDocLocalInspection.myAdditionalJavadocTags) + if (tags.contains(tag)) { + return + } + javaDocLocalInspection.myAdditionalJavadocTags += "," + tag + profile.profileChanged() + profile.scopesChanged() + } + private fun getAllTools(project: Project, profile: InspectionProfileImpl): List> { val method = InspectionProfileImpl::class.java.methods.first { it.name == "getAllTools" diff --git a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/component/AliProjectComponent.kt b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/component/AliProjectComponent.kt index f5ce84931024670fb764fca5d886b70ca5096fbd..ef51918190f637ff4a96bd00413316134d4fdb06 100644 --- a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/component/AliProjectComponent.kt +++ b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/component/AliProjectComponent.kt @@ -15,6 +15,7 @@ */ package com.alibaba.p3c.idea.component +import com.alibaba.p3c.idea.compatible.inspection.Inspections import com.alibaba.p3c.idea.config.P3cConfig import com.alibaba.p3c.idea.inspection.AliPmdInspectionInvoker import com.alibaba.p3c.idea.pmd.SourceCodeProcessor @@ -30,8 +31,10 @@ import com.intellij.psi.PsiManager * @author caikang * @date 2016/12/13 */ -class AliProjectComponent(private val project: Project, - val p3cConfig: P3cConfig) : AliBaseProjectComponent { +class AliProjectComponent( + private val project: Project, + val p3cConfig: P3cConfig +) : AliBaseProjectComponent { private val listener: VirtualFileListener private val javaExtension = ".java" private val velocityExtension = ".vm" @@ -56,6 +59,7 @@ class AliProjectComponent(private val project: Project, } override fun projectOpened() { + Inspections.addCustomTag(project, "date") VirtualFileManager.getInstance().addVirtualFileListener(listener) } diff --git a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/inspection/AliPmdInspection.kt b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/inspection/AliPmdInspection.kt index 1f170e4da8841561f633ce72407550d44e2b6a9f..54c6b33342a103df4bef01adbe77e174c0a7925f 100644 --- a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/inspection/AliPmdInspection.kt +++ b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/inspection/AliPmdInspection.kt @@ -16,6 +16,7 @@ package com.alibaba.p3c.idea.inspection import com.alibaba.p3c.idea.inspection.AliLocalInspectionToolProvider.ShouldInspectChecker +import com.alibaba.p3c.idea.util.NumberConstants import com.alibaba.p3c.idea.util.QuickFixes import com.intellij.codeHighlighting.HighlightDisplayLevel import com.intellij.codeInspection.InspectionManager @@ -103,8 +104,8 @@ class AliPmdInspection(private val ruleName: String) var shortName = "Alibaba" + ruleName val index = shortName.lastIndexOf("Rule") - if (index > com.alibaba.p3c.idea.NumberConstants.INDEX_0) { - shortName = shortName.substring(com.alibaba.p3c.idea.NumberConstants.INDEX_0, index) + if (index > NumberConstants.INDEX_0) { + shortName = shortName.substring(NumberConstants.INDEX_0, index) } return shortName } diff --git a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/inspection/RuleInspectionUtils.kt b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/inspection/RuleInspectionUtils.kt index fce0372ec256cb0288118a5d10d15752685be3dd..3f0693d7620fb632ae60a9dd1ef5016d74f96810 100644 --- a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/inspection/RuleInspectionUtils.kt +++ b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/inspection/RuleInspectionUtils.kt @@ -17,6 +17,7 @@ package com.alibaba.p3c.idea.inspection import com.alibaba.p3c.idea.config.P3cConfig import com.alibaba.p3c.idea.util.HighlightDisplayLevels +import com.alibaba.p3c.idea.util.NumberConstants import com.alibaba.p3c.pmd.I18nResources import com.alibaba.smartfox.idea.common.util.getService import com.google.common.base.Joiner @@ -177,7 +178,7 @@ object RuleInspectionUtils { logger.info("start to find rule sets from jar " + url) var path = URLDecoder.decode(url.path, StandardCharsets.UTF_8.name()) val index = path.lastIndexOf(URLUtil.JAR_SEPARATOR) - if (index > com.alibaba.p3c.idea.NumberConstants.INDEX_0) { + if (index > NumberConstants.INDEX_0) { path = path.substring("file:".length, index) } val jarFile = JarFile(path) diff --git a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/inspection/standalone/MapOrSetKeyShouldOverrideHashCodeEqualsInspection.kt b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/inspection/standalone/MapOrSetKeyShouldOverrideHashCodeEqualsInspection.kt index b0cdd5ccf4a812e2593baefdc0268f18b6d7ec0c..3ecbb31079e4e35a94fa938d1caa4e504119b353 100644 --- a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/inspection/standalone/MapOrSetKeyShouldOverrideHashCodeEqualsInspection.kt +++ b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/inspection/standalone/MapOrSetKeyShouldOverrideHashCodeEqualsInspection.kt @@ -15,8 +15,8 @@ */ package com.alibaba.p3c.idea.inspection.standalone -import com.alibaba.p3c.idea.NumberConstants -import com.alibaba.p3c.idea.ObjectConstants +import com.alibaba.p3c.idea.util.NumberConstants +import com.alibaba.p3c.idea.util.ObjectConstants import com.alibaba.p3c.idea.i18n.P3cBundle import com.alibaba.p3c.idea.inspection.AliBaseInspection import com.alibaba.p3c.idea.util.HighlightDisplayLevels diff --git a/idea-plugin/p3c-common/src/main/java/com/alibaba/p3c/idea/NumberConstants.java b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/util/NumberConstants.kt similarity index 74% rename from idea-plugin/p3c-common/src/main/java/com/alibaba/p3c/idea/NumberConstants.java rename to idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/util/NumberConstants.kt index 7a3610e0620c9dafecb725f5ad6fd596206c76bd..b71c8db7950385cd8ce289d45f41748329eab7cb 100644 --- a/idea-plugin/p3c-common/src/main/java/com/alibaba/p3c/idea/NumberConstants.java +++ b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/util/NumberConstants.kt @@ -13,17 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.p3c.idea; +package com.alibaba.p3c.idea.util /** * @author caikang * @date 2016/12/28 */ -public interface NumberConstants { - int INTEGER_SIZE_OR_LENGTH_0 = 0; - int INTEGER_SIZE_OR_LENGTH_1 = 1; - int INTEGER_SIZE_OR_LENGTH_2 = 2; +object NumberConstants { + val INTEGER_SIZE_OR_LENGTH_0 = 0 + val INTEGER_SIZE_OR_LENGTH_1 = 1 + val INTEGER_SIZE_OR_LENGTH_2 = 2 - int INDEX_0 = 0; - int INDEX_1 = 1; + val INDEX_0 = 0 + val INDEX_1 = 1 } diff --git a/idea-plugin/p3c-common/src/main/java/com/alibaba/p3c/idea/ObjectConstants.java b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/util/ObjectConstants.kt similarity index 65% rename from idea-plugin/p3c-common/src/main/java/com/alibaba/p3c/idea/ObjectConstants.java rename to idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/util/ObjectConstants.kt index 2e09e384ca111b09ccc4432e8ebfd43ad4b6cb24..b54ea3fcf9108f3dd3525e98187097583a1b7116 100644 --- a/idea-plugin/p3c-common/src/main/java/com/alibaba/p3c/idea/ObjectConstants.java +++ b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/util/ObjectConstants.kt @@ -13,18 +13,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.p3c.idea; +package com.alibaba.p3c.idea.util /** * @author caikang * @date 2016/12/28 */ -public interface ObjectConstants { - String METHOD_NAME_EQUALS = "equals"; - String METHOD_NAME_HASHCODE = "hashCode"; - String METHOD_NAME_ADD = "add"; - String METHOD_NAME_PUT = "put"; - String CLASS_LITERAL = "class"; - String INTERFACE_LITERAL = "interface"; - String ENUM_LITERAL = "enum"; +object ObjectConstants { + val METHOD_NAME_EQUALS = "equals" + val METHOD_NAME_HASHCODE = "hashCode" + val METHOD_NAME_ADD = "add" + val METHOD_NAME_PUT = "put" + val CLASS_LITERAL = "class" + val INTERFACE_LITERAL = "interface" + val ENUM_LITERAL = "enum" } diff --git a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/util/ProblemsUtils.kt b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/util/ProblemsUtils.kt index bdf59da2ce02b4e487d8ddb7f61420f087b5a3d0..75971782b875e79ad6c0bb556ba644bec5fb9f4f 100644 --- a/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/util/ProblemsUtils.kt +++ b/idea-plugin/p3c-common/src/main/kotlin/com/alibaba/p3c/idea/util/ProblemsUtils.kt @@ -111,9 +111,9 @@ object ProblemsUtils { if (psiElement == null) { return null } - if (psiElement is PsiKeyword && psiElement.text != null && (com.alibaba.p3c.idea.ObjectConstants.CLASS_LITERAL == psiElement.text - || com.alibaba.p3c.idea.ObjectConstants.INTERFACE_LITERAL == psiElement.text - || com.alibaba.p3c.idea.ObjectConstants.ENUM_LITERAL == psiElement.text) && psiElement.parent is PsiClass) { + if (psiElement is PsiKeyword && psiElement.text != null && (ObjectConstants.CLASS_LITERAL == psiElement.text + || ObjectConstants.INTERFACE_LITERAL == psiElement.text + || ObjectConstants.ENUM_LITERAL == psiElement.text) && psiElement.parent is PsiClass) { val parent = psiElement.parent as PsiClass val identifier = parent.nameIdentifier return identifier ?: psiElement @@ -131,4 +131,4 @@ object ProblemsUtils { desc, ProblemHighlightType.GENERIC_ERROR_OR_WARNING, isOnTheFly, quickFix()) } -} \ No newline at end of file +} diff --git a/p3c-pmd/src/main/java/com/alibaba/p3c/pmd/lang/java/util/NumberConstants.java b/p3c-pmd/src/main/java/com/alibaba/p3c/pmd/lang/java/util/NumberConstants.java index d6737fc9b175e79994ccdd904f5d221cc690d286..8316260e8328f4d3c7b9da79d65cf707215446d2 100644 --- a/p3c-pmd/src/main/java/com/alibaba/p3c/pmd/lang/java/util/NumberConstants.java +++ b/p3c-pmd/src/main/java/com/alibaba/p3c/pmd/lang/java/util/NumberConstants.java @@ -19,13 +19,18 @@ package com.alibaba.p3c.pmd.lang.java.util; * @author caikang * @date 2016/12/28 */ -public interface NumberConstants { - int INTEGER_SIZE_OR_LENGTH_0 = 0; - int INTEGER_SIZE_OR_LENGTH_1 = 1; - int INTEGER_SIZE_OR_LENGTH_2 = 2; - int INTEGER_SIZE_OR_LENGTH_3 = 3; +public final class NumberConstants { + private NumberConstants() { + throw new AssertionError("com.alibaba.p3c.pmd.lang.java.util.NumberConstants" + + " instances for you!"); + } - int INDEX_0 = 0; - int INDEX_1 = 1; - int INDEX_2 = 2; + public static final int INTEGER_SIZE_OR_LENGTH_0 = 0; + public static final int INTEGER_SIZE_OR_LENGTH_1 = 1; + public static final int INTEGER_SIZE_OR_LENGTH_2 = 2; + public static final int INTEGER_SIZE_OR_LENGTH_3 = 3; + + public static final int INDEX_0 = 0; + public static final int INDEX_1 = 1; + public static final int INDEX_2 = 2; } diff --git a/p3c-pmd/src/main/java/com/alibaba/p3c/pmd/lang/java/util/StringAndCharConstants.java b/p3c-pmd/src/main/java/com/alibaba/p3c/pmd/lang/java/util/StringAndCharConstants.java index a0fe3cfc29aab3ed2dc4c4645d6a6d54a04b1bb4..c7b4757db51f1f07827c8832708f6245c1ae4999 100644 --- a/p3c-pmd/src/main/java/com/alibaba/p3c/pmd/lang/java/util/StringAndCharConstants.java +++ b/p3c-pmd/src/main/java/com/alibaba/p3c/pmd/lang/java/util/StringAndCharConstants.java @@ -19,6 +19,11 @@ package com.alibaba.p3c.pmd.lang.java.util; * @author caikang * @date 2017/03/28 */ -public interface StringAndCharConstants { - char DOT = '.'; +public final class StringAndCharConstants { + private StringAndCharConstants(){ + throw new AssertionError("com.alibaba.p3c.pmd.lang.java.util.StringAndCharConstants" + + " instances for you!"); + } + + public static final char DOT = '.'; }