From 30445436abe44867d7a304287df567f7ab106d63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AA=8F=E7=83=88?= Date: Fri, 10 Nov 2017 19:15:45 +0800 Subject: [PATCH] fix https://github.com/alibaba/p3c/issues/157 https://github.com/alibaba/p3c/issues/102 https://github.com/alibaba/p3c/issues/77 treeview keep expand state while update result data --- eclipse-plugin/.gitignore | 1 + .../feature.xml | 2 +- .../pom.xml | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../pom.xml | 2 +- .../eclipse/handler/CodeAnalysisHandler.kt | 3 +- .../smartfox/eclipse/job/CodeAnalysis.kt | 14 +++++--- .../eclipse/job/{P3CMutex.kt => P3cMutex.kt} | 5 ++- .../eclipse/ui/InspectionResultView.kt | 4 +-- .../smartfox/eclipse/ui/InspectionResults.kt | 13 +++---- .../smartfox/eclipse/ui/QuickFixAction.kt | 16 ++++++--- .../alibaba/smartfox/eclipse/ui/Violations.kt | 35 ++++++++++++++++++- .../smartfox/eclipse/util/MarkerUtil.kt | 1 - .../pom.xml | 2 +- eclipse-plugin/pom.xml | 2 +- 15 files changed, 74 insertions(+), 30 deletions(-) rename eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/job/{P3CMutex.kt => P3cMutex.kt} (87%) diff --git a/eclipse-plugin/.gitignore b/eclipse-plugin/.gitignore index af53b90..51836b5 100644 --- a/eclipse-plugin/.gitignore +++ b/eclipse-plugin/.gitignore @@ -11,6 +11,7 @@ testdata/ *.war *.ear +*.gradle #hsf files configuration diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.feature/feature.xml b/eclipse-plugin/com.alibaba.smartfox.eclipse.feature/feature.xml index 9d98453..cb48543 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.feature/feature.xml +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.feature/pom.xml b/eclipse-plugin/com.alibaba.smartfox.eclipse.feature/pom.xml index 8d0c7e2..b0647d5 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.feature/pom.xml +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.feature/pom.xml @@ -5,7 +5,7 @@ com.alibaba.smartfox.eclipse smartfox-eclipse - 1.0.1-SNAPSHOT + 1.0.2-SNAPSHOT com.alibaba.smartfox.eclipse.feature eclipse-feature diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/META-INF/MANIFEST.MF b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/META-INF/MANIFEST.MF index c5fc8cb..50d3336 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/META-INF/MANIFEST.MF +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: com.alibaba.smartfox.eclipse.plugin Bundle-SymbolicName: com.alibaba.smartfox.eclipse.plugin;singleton:=true -Bundle-Version: 1.0.1.qualifier +Bundle-Version: 1.0.2.qualifier Bundle-Activator: com.alibaba.smartfox.eclipse.SmartfoxActivator Bundle-Vendor: Alibaba Require-Bundle: org.eclipse.ui, diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/pom.xml b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/pom.xml index 8b00b56..dbf0ad7 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/pom.xml +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/pom.xml @@ -5,7 +5,7 @@ com.alibaba.smartfox.eclipse smartfox-eclipse - 1.0.1-SNAPSHOT + 1.0.2-SNAPSHOT com.alibaba.smartfox.eclipse.plugin eclipse-plugin diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/handler/CodeAnalysisHandler.kt b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/handler/CodeAnalysisHandler.kt index 16108a6..f2730a2 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/handler/CodeAnalysisHandler.kt +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/handler/CodeAnalysisHandler.kt @@ -46,7 +46,8 @@ open class CodeAnalysisHandler : AbstractHandler(), IElementUpdater { element.setTooltip(text) } - @Throws(ExecutionException::class) override fun execute(executionEvent: ExecutionEvent): Any? { + @Throws(ExecutionException::class) + override fun execute(executionEvent: ExecutionEvent): Any? { val selection = HandlerUtil.getCurrentSelectionChecked(executionEvent) val part = HandlerUtil.getActivePart(executionEvent) if (part is ViewPart) { diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/job/CodeAnalysis.kt b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/job/CodeAnalysis.kt index 8e70c1f..989357a 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/job/CodeAnalysis.kt +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/job/CodeAnalysis.kt @@ -83,8 +83,13 @@ object CodeAnalysis { return Status.OK_STATUS } } - job.rule = P3CMutex - job.schedule() + job.apply { + isUser = true + isSystem = false + priority = Job.INTERACTIVE + rule = P3cMutex + schedule() + } } fun processFileToMakers(file: IFile, monitor: IProgressMonitor): List { @@ -92,10 +97,9 @@ object CodeAnalysis { val ruleViolations = processFile(file) MarkerUtil.removeAllMarkers(file) - val markers = ruleViolations.map { + return ruleViolations.map { MarkerViolation(MarkerUtil.addMarker(file, it), it) } - return markers } private fun processFile(file: IFile): List { @@ -126,4 +130,4 @@ object CodeAnalysis { } return report.toList() } -} \ No newline at end of file +} diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/job/P3CMutex.kt b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/job/P3cMutex.kt similarity index 87% rename from eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/job/P3CMutex.kt rename to eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/job/P3cMutex.kt index 3f3b363..8dab560 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/job/P3CMutex.kt +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/job/P3cMutex.kt @@ -15,7 +15,6 @@ */ package com.alibaba.smartfox.eclipse.job -import org.eclipse.core.resources.IResource import org.eclipse.core.runtime.jobs.ISchedulingRule /** @@ -24,12 +23,12 @@ import org.eclipse.core.runtime.jobs.ISchedulingRule * @author caikang * @date 2017/06/14 */ -object P3CMutex : ISchedulingRule { +object P3cMutex : ISchedulingRule { override fun contains(rule: ISchedulingRule?): Boolean { return isConflicting(rule) } override fun isConflicting(rule: ISchedulingRule?): Boolean { - return rule == this || rule is IResource + return rule == this } } \ No newline at end of file diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/InspectionResultView.kt b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/InspectionResultView.kt index 0002521..ac5dbcd 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/InspectionResultView.kt +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/InspectionResultView.kt @@ -16,7 +16,7 @@ package com.alibaba.smartfox.eclipse.ui import com.alibaba.smartfox.eclipse.SmartfoxActivator -import com.alibaba.smartfox.eclipse.job.P3CMutex +import com.alibaba.smartfox.eclipse.job.P3cMutex import com.alibaba.smartfox.eclipse.util.MarkerUtil import org.eclipse.core.resources.IFile import org.eclipse.core.resources.IMarker @@ -133,7 +133,7 @@ class InspectionResultView : ViewPart() { return Status.OK_STATUS } } - job.rule = P3CMutex + job.rule = P3cMutex job.schedule() } } diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/InspectionResults.kt b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/InspectionResults.kt index c50df7a..3e14820 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/InspectionResults.kt +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/InspectionResults.kt @@ -27,15 +27,16 @@ import org.eclipse.core.resources.IMarker * @date 2017/06/13 */ object InspectionResults { - val fileViolations = linkedMapOf>() + private val fileViolations = linkedMapOf>() var contentDescription = "" - val errors: List get() = run { - val result = toLevelViolationList(fileViolations.values.flatten()) - contentDescription = getContentDescription(result) - result - } + val errors: List + get() { + val result = toLevelViolationList(fileViolations.values.flatten()) + contentDescription = getContentDescription(result) + return result + } lateinit var view: InspectionResultView diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/QuickFixAction.kt b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/QuickFixAction.kt index 534237e..9dfb33d 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/QuickFixAction.kt +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/QuickFixAction.kt @@ -19,7 +19,7 @@ import com.alibaba.p3c.pmd.lang.java.rule.flowcontrol.NeedBraceRule import com.alibaba.smartfox.eclipse.RunWithoutViewRefresh import com.alibaba.smartfox.eclipse.SmartfoxActivator import com.alibaba.smartfox.eclipse.job.CodeAnalysis -import com.alibaba.smartfox.eclipse.job.P3CMutex +import com.alibaba.smartfox.eclipse.job.P3cMutex import com.alibaba.smartfox.eclipse.pmd.rule.MissingOverrideAnnotationRule import com.alibaba.smartfox.eclipse.util.CleanUps import com.alibaba.smartfox.eclipse.util.getResolution @@ -57,7 +57,7 @@ class QuickFixAction(val view: InspectionResultView) : Action("Quick Fix") { } private fun runJob() { - val job = object : Job("Perform Quick Fix") { + val job = object : Job("Perform P3C Quick Fix") { override fun run(monitor: IProgressMonitor): IStatus { val subMonitor = SubMonitor.convert(monitor, markers.size) monitor.setTaskName("Process File") @@ -81,8 +81,14 @@ class QuickFixAction(val view: InspectionResultView) : Action("Quick Fix") { return Status.OK_STATUS } } - job.rule = P3CMutex - job.schedule() + val outJob = object:Job("P3C Quick Fix Wait analysis finish"){ + override fun run(monitor: IProgressMonitor?): IStatus { + job.schedule() + return Status.OK_STATUS + } + } + outJob.rule = P3cMutex + outJob.schedule() } @@ -105,4 +111,4 @@ class QuickFixAction(val view: InspectionResultView) : Action("Quick Fix") { return ruleName == MissingOverrideAnnotationRule::class.java.simpleName || ruleName == NeedBraceRule::class.java.simpleName } -} \ No newline at end of file +} diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/Violations.kt b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/Violations.kt index b5aee0d..ddb7a09 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/Violations.kt +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/ui/Violations.kt @@ -33,6 +33,17 @@ data class LevelViolations(var level: String, var rules: List, it.removeMarkers() } } + + override fun equals(other: Any?): Boolean { + if (other !is LevelViolations) { + return false + } + return level == other.level + } + + override fun hashCode(): Int { + return level.hashCode() + } } data class RuleViolations(var rule: String, var files: List, @@ -42,12 +53,34 @@ data class RuleViolations(var rule: String, var files: List, it.removeMarkers() } } + + override fun equals(other: Any?): Boolean { + if (other !is RuleViolations) { + return false + } + return rule == other.rule + } + + override fun hashCode(): Int { + return rule.hashCode() + } } data class FileMarkers(var file: IFile, var markers: List) { fun removeMarkers() { MarkerUtil.removeAllMarkers(file) } + + override fun equals(other: Any?): Boolean { + if (other !is FileMarkers) { + return false + } + return file == other.file + } + + override fun hashCode(): Int { + return file.hashCode() + } } -data class MarkerViolation(val marker: IMarker, val violation: RuleViolation) \ No newline at end of file +data class MarkerViolation(val marker: IMarker, val violation: RuleViolation) diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/util/MarkerUtil.kt b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/util/MarkerUtil.kt index 923f511..4c021bb 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/util/MarkerUtil.kt +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.plugin/src/main/kotlin/com/alibaba/smartfox/eclipse/util/MarkerUtil.kt @@ -54,7 +54,6 @@ object MarkerUtil { @Throws(CoreException::class) fun addMarker(file: IFile, violation: RuleViolation): IMarker { - val marker = file.createMarker(MARKER_TYPE) marker.setAttribute(IMarker.MESSAGE, violation.description) val severity = when (violation.rule.priority) { diff --git a/eclipse-plugin/com.alibaba.smartfox.eclipse.updatesite/pom.xml b/eclipse-plugin/com.alibaba.smartfox.eclipse.updatesite/pom.xml index 380727d..17fa208 100644 --- a/eclipse-plugin/com.alibaba.smartfox.eclipse.updatesite/pom.xml +++ b/eclipse-plugin/com.alibaba.smartfox.eclipse.updatesite/pom.xml @@ -5,7 +5,7 @@ com.alibaba.smartfox.eclipse smartfox-eclipse - 1.0.1-SNAPSHOT + 1.0.2-SNAPSHOT com.alibaba.smartfox.eclipse.updatesite eclipse-repository diff --git a/eclipse-plugin/pom.xml b/eclipse-plugin/pom.xml index cb85d1c..92551bf 100644 --- a/eclipse-plugin/pom.xml +++ b/eclipse-plugin/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.alibaba.smartfox.eclipse smartfox-eclipse - 1.0.1-SNAPSHOT + 1.0.2-SNAPSHOT pom 2017