From b0f5b82db55a2dfcf1e1a0c6572e6a2382303e93 Mon Sep 17 00:00:00 2001 From: Nikita Skvortsov Date: Wed, 20 Sep 2017 17:42:50 +0300 Subject: [PATCH] add entry point for inspections settings import --- platform/analysis-impl/analysis-impl.iml | 1 + .../InspectionsProfileConfigurationHandler.kt | 46 ++++++++++++++++++ .../src/META-INF/ExternalSystemExtensions.xml | 1 + .../GradleSettingsImportingTest.java | 24 +++++++++ .../gradle-idea-ext.jar | Bin 11394 -> 11509 bytes 5 files changed, 72 insertions(+) create mode 100644 platform/analysis-impl/src/com/intellij/profile/codeInspection/InspectionsProfileConfigurationHandler.kt diff --git a/platform/analysis-impl/analysis-impl.iml b/platform/analysis-impl/analysis-impl.iml index eafc1b2b89cd..ec8ddd53502c 100644 --- a/platform/analysis-impl/analysis-impl.iml +++ b/platform/analysis-impl/analysis-impl.iml @@ -18,5 +18,6 @@ + \ No newline at end of file diff --git a/platform/analysis-impl/src/com/intellij/profile/codeInspection/InspectionsProfileConfigurationHandler.kt b/platform/analysis-impl/src/com/intellij/profile/codeInspection/InspectionsProfileConfigurationHandler.kt new file mode 100644 index 000000000000..e49a8f10ec5d --- /dev/null +++ b/platform/analysis-impl/src/com/intellij/profile/codeInspection/InspectionsProfileConfigurationHandler.kt @@ -0,0 +1,46 @@ +/* + * Copyright 2000-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.profile.codeInspection + +import com.intellij.codeInspection.ex.InspectionProfileImpl +import com.intellij.codeInspection.ex.InspectionToolRegistrar +import com.intellij.openapi.externalSystem.model.project.ConfigurationData +import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider +import com.intellij.openapi.externalSystem.service.project.manage.ConfigurationHandler +import com.intellij.openapi.project.Project + +/** + * Created by Nikita.Skvortsov + * date: 19.09.2017. + */ +class InspectionsProfileConfigurationHandler: ConfigurationHandler { + override fun apply(project: Project, modelsProvider: IdeModifiableModelsProvider, configuration: ConfigurationData) { + val inspectionsSettings: Map = configuration.find("inspections") as? Map ?: return + + val gradleProfileName = "Gradle Imported" + val profileManager = ProjectInspectionProfileManager.getInstance(project) + val importedProfile = InspectionProfileImpl(gradleProfileName, InspectionToolRegistrar.getInstance(), profileManager) + + importedProfile.copyFrom(profileManager.getProfile(com.intellij.codeInspection.ex.DEFAULT_PROFILE_NAME)) + importedProfile.initInspectionTools(project) + val modifiableModel = importedProfile.modifiableModel + modifiableModel.name = gradleProfileName + + modifiableModel.commit() + profileManager.addProfile(importedProfile) + profileManager.setRootProfile(gradleProfileName) + } +} \ No newline at end of file diff --git a/platform/platform-resources/src/META-INF/ExternalSystemExtensions.xml b/platform/platform-resources/src/META-INF/ExternalSystemExtensions.xml index 20fa7c37f4ab..ed769ca79bee 100644 --- a/platform/platform-resources/src/META-INF/ExternalSystemExtensions.xml +++ b/platform/platform-resources/src/META-INF/ExternalSystemExtensions.xml @@ -39,6 +39,7 @@ + diff --git a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleSettingsImportingTest.java b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleSettingsImportingTest.java index d9bde324b662..eed808da7741 100644 --- a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleSettingsImportingTest.java +++ b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/importing/GradleSettingsImportingTest.java @@ -15,6 +15,7 @@ */ package org.jetbrains.plugins.gradle.importing; +import com.intellij.codeInspection.ex.InspectionProfileImpl; import com.intellij.compiler.CompilerConfiguration; import com.intellij.compiler.CompilerConfigurationImpl; import com.intellij.compiler.CompilerWorkspaceConfiguration; @@ -25,6 +26,7 @@ import com.intellij.openapi.externalSystem.service.project.manage.FacetHandlerEx import com.intellij.openapi.externalSystem.service.project.manage.RunConfigHandlerExtension; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; +import com.intellij.profile.codeInspection.InspectionProfileManager; import com.intellij.psi.codeStyle.CodeStyleScheme; import com.intellij.psi.codeStyle.CodeStyleSchemes; import com.intellij.psi.codeStyle.CodeStyleSettings; @@ -48,6 +50,28 @@ public class GradleSettingsImportingTest extends GradleImportingTestCase { } + @Test + public void testInspectionSettingsImport() throws Exception { + importProject( + "buildscript {\n" + + " dependencies {\n" + + " classpath files('" + getGradlePluginPath() + "')\n" + + " }\n" + + "}\n" + + "apply plugin: 'org.jetbrains.gradle.plugin.idea-ext'\n" + + "idea {\n" + + " project.settings {\n" + + " inspections {\n" + + " }\n" + + " }\n" + + "}" + ); + + final InspectionProfileImpl profile = InspectionProfileManager.getInstance(myProject).getCurrentProfile(); + assertEquals("Gradle Imported", profile.getName()); + } + + @Test public void testCodeStyleSettingsImport() throws Exception { importProject( diff --git a/plugins/gradle/tooling-extension-impl/testData/testCompilerConfigurationSettingsImport/gradle-idea-ext.jar b/plugins/gradle/tooling-extension-impl/testData/testCompilerConfigurationSettingsImport/gradle-idea-ext.jar index 395fec877a984a11f7ac52ee844d605066735177..21a3d99d83fb87ee41b7d29d5d4d2db4f37fc6a8 100755 GIT binary patch delta 5037 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 delta 4932 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