IDEA-201599 Don't show 'Version must be specified' error in plugin.xml files for plugins developed via gradle-intellij-plugin

This commit is contained in:
Yann Cébron
2018-11-01 11:51:36 +01:00
parent 03da205144
commit 57d7207a58
5 changed files with 43 additions and 1 deletions
@@ -51,6 +51,7 @@ import org.jetbrains.idea.devkit.dom.Action;
import org.jetbrains.idea.devkit.dom.*;
import org.jetbrains.idea.devkit.dom.impl.PluginPsiClassConverter;
import org.jetbrains.idea.devkit.inspections.quickfix.AddWithTagFix;
import org.jetbrains.idea.devkit.module.PluginModuleType;
import org.jetbrains.idea.devkit.util.PsiUtil;
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
@@ -187,7 +188,9 @@ public class PluginXmlDomInspection extends BasicDomElementsInspection<IdeaPlugi
boolean isNotIdeaProject = !PsiUtil.isIdeaProject(module.getProject());
if (isNotIdeaProject && !DomUtil.hasXml(ideaPlugin.getVersion())) {
if (isNotIdeaProject &&
!DomUtil.hasXml(ideaPlugin.getVersion()) &&
PluginModuleType.isOfType(module)) {
holder.createProblem(ideaPlugin, DevKitBundle.message("inspections.plugin.xml.version.must.be.specified"),
new AddMissingMainTag("Add <version>", ideaPlugin.getVersion(), ""));
}
@@ -0,0 +1,4 @@
<idea-plugin>
<id>test</id>
<vendor>JetBrains</vendor>
</idea-plugin>
@@ -0,0 +1,4 @@
<<error descr="<version> must be specified">idea-plugin</error>>
<id>test</id>
<vendor>JetBrains</vendor>
</idea-plugin>
@@ -367,6 +367,11 @@ class PluginXmlFunctionalTest extends JavaCodeInsightFixtureTestCase {
}
}
void testPluginWithoutVersion() {
doHighlightingTest("pluginWithoutVersion.xml")
testHighlightingInIdeaProject("pluginWithoutVersion.xml")
}
void testOrderAttributeHighlighting() {
doHighlightingTest("orderAttributeHighlighting.xml")
}
@@ -0,0 +1,26 @@
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.idea.devkit.codeInsight;
import com.intellij.testFramework.TestDataPath;
import org.jetbrains.idea.devkit.DevkitJavaTestsUtil;
import org.jetbrains.idea.devkit.inspections.PluginModuleTestCase;
import org.jetbrains.idea.devkit.inspections.PluginXmlDomInspection;
@TestDataPath("$CONTENT_ROOT/testData/codeInsight")
public class PluginXmlPluginModuleTest extends PluginModuleTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
myFixture.enableInspections(new PluginXmlDomInspection());
}
@Override
protected String getBasePath() {
return DevkitJavaTestsUtil.TESTDATA_PATH + "codeInsight";
}
public void testPluginWithoutVersionInPluginModule() {
myFixture.testHighlighting(false, false, false, "pluginWithoutVersionInPluginModule.xml");
}
}