diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/codeInspection/service/TaggedExtendsInterfaceClassInspection.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/codeInspection/service/TaggedExtendsInterfaceClassInspection.java index 0c1752361..ddb5132d6 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/codeInspection/service/TaggedExtendsInterfaceClassInspection.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/codeInspection/service/TaggedExtendsInterfaceClassInspection.java @@ -3,8 +3,6 @@ import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.ProblemHighlightType; import com.intellij.codeInspection.ProblemsHolder; -import com.intellij.lang.Language; -import com.intellij.lang.xml.XMLLanguage; import com.intellij.openapi.util.NotNullLazyValue; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementVisitor; @@ -23,7 +21,6 @@ import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.yaml.YAMLLanguage; import org.jetbrains.yaml.YAMLTokenTypes; import org.jetbrains.yaml.psi.YAMLCompoundValue; import org.jetbrains.yaml.psi.YAMLKeyValue; @@ -34,98 +31,118 @@ /** * @author Daniel Espendiller */ -public class TaggedExtendsInterfaceClassInspection extends LocalInspectionTool { +public class TaggedExtendsInterfaceClassInspection { + public static class TaggedExtendsInterfaceClassInspectionYaml extends LocalInspectionTool { + public @NotNull PsiElementVisitor buildVisitor(final @NotNull ProblemsHolder holder, boolean isOnTheFly) { + if (!Symfony2ProjectComponent.isEnabled(holder.getProject())) { + return super.buildVisitor(holder, isOnTheFly); + } - @NotNull - @Override - public PsiElementVisitor buildVisitor(final @NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!Symfony2ProjectComponent.isEnabled(holder.getProject())) { - return super.buildVisitor(holder, isOnTheFly); - } + return new PsiElementVisitor() { + private NotNullLazyValue serviceCollector; - return new PsiElementVisitor() { - private NotNullLazyValue serviceCollector; + @Override + public void visitElement(@NotNull PsiElement element) { + visitYamlElement(element, holder); + super.visitElement(element); + } - @Override - public void visitElement(@NotNull PsiElement element) { - Language language = element.getLanguage(); + private void visitYamlElement(@NotNull PsiElement psiElement, @NotNull ProblemsHolder holder) { + if (YamlElementPatternHelper.getSingleLineScalarKey("class").accepts(psiElement)) { - if (language == YAMLLanguage.INSTANCE) { - visitYamlElement(element, holder, this.createLazyServiceCollector()); - } else if (language == XMLLanguage.INSTANCE) { - visitXmlElement(element, holder, this.createLazyServiceCollector()); - } + // class: '\Foo' + String text = PsiElementUtils.trimQuote(psiElement.getText()); + if (StringUtils.isBlank(text)) { + return; + } - super.visitElement(element); - } + PsiElement yamlScalar = psiElement.getParent(); + if (!(yamlScalar instanceof YAMLScalar)) { + return; + } - private NotNullLazyValue createLazyServiceCollector() { - if (this.serviceCollector == null) { - this.serviceCollector = NotNullLazyValue.lazy(() -> new ContainerCollectionResolver.LazyServiceCollector(holder.getProject())); + PsiElement classKey = yamlScalar.getParent(); + if (classKey instanceof YAMLKeyValue) { + PsiElement yamlCompoundValue = classKey.getParent(); + if (yamlCompoundValue instanceof YAMLCompoundValue) { + PsiElement serviceKeyValue = yamlCompoundValue.getParent(); + if (serviceKeyValue instanceof YAMLKeyValue) { + Set tags = YamlHelper.collectServiceTags((YAMLKeyValue) serviceKeyValue); + if (!tags.isEmpty()) { + registerTaggedProblems(psiElement, tags, text, holder, this.createLazyServiceCollector()); + } + } + } + } + } else if (psiElement.getNode().getElementType() == YAMLTokenTypes.SCALAR_KEY && YamlElementPatternHelper.getServiceIdKeyValuePattern().accepts(psiElement.getParent())) { + // Foobar\Foo: ~ + String text = PsiElementUtils.getText(psiElement); + if (StringUtils.isNotBlank(text) && YamlHelper.isClassServiceId(text) && text.contains("\\")) { + PsiElement yamlKeyValue = psiElement.getParent(); + if (yamlKeyValue instanceof YAMLKeyValue && YamlHelper.getYamlKeyValue((YAMLKeyValue) yamlKeyValue, "resource") == null && YamlHelper.getYamlKeyValue((YAMLKeyValue) yamlKeyValue, "exclude") == null) { + Set tags = YamlHelper.collectServiceTags((YAMLKeyValue) yamlKeyValue); + if (!tags.isEmpty()) { + registerTaggedProblems(psiElement, tags, text, holder, this.createLazyServiceCollector()); + } + } + } + } } - return this.serviceCollector; - } - }; - } + private NotNullLazyValue createLazyServiceCollector() { + if (this.serviceCollector == null) { + this.serviceCollector = NotNullLazyValue.lazy(() -> new ContainerCollectionResolver.LazyServiceCollector(holder.getProject())); + } - private void visitXmlElement(@NotNull PsiElement element, @NotNull ProblemsHolder holder, @NotNull NotNullLazyValue lazyServiceCollector) { - String className = getClassNameFromServiceDefinition(element); - if (className != null) { - XmlTag parentOfType = PsiTreeUtil.getParentOfType(element, XmlTag.class); - if (parentOfType != null) { - // attach problems to string value only - PsiElement[] psiElements = element.getChildren(); - if (psiElements.length > 2) { - registerTaggedProblems(psiElements[1], FormUtil.getTags(parentOfType), className, holder, lazyServiceCollector); + return this.serviceCollector; } - } + }; } } - private void visitYamlElement(@NotNull PsiElement psiElement, @NotNull ProblemsHolder holder, @NotNull NotNullLazyValue lazyServiceCollector) { - if (YamlElementPatternHelper.getSingleLineScalarKey("class").accepts(psiElement)) { + public static class TaggedExtendsInterfaceClassInspectionXml extends LocalInspectionTool { + private NotNullLazyValue serviceCollector; - // class: '\Foo' - String text = PsiElementUtils.trimQuote(psiElement.getText()); - if (StringUtils.isBlank(text)) { - return; + public @NotNull PsiElementVisitor buildVisitor(final @NotNull ProblemsHolder holder, boolean isOnTheFly) { + if (!Symfony2ProjectComponent.isEnabled(holder.getProject())) { + return super.buildVisitor(holder, isOnTheFly); } - PsiElement yamlScalar = psiElement.getParent(); - if (!(yamlScalar instanceof YAMLScalar)) { - return; - } + return new PsiElementVisitor() { + private NotNullLazyValue serviceCollector; + + @Override + public void visitElement(@NotNull PsiElement element) { + visitXmlElement(element, holder); + super.visitElement(element); + } - PsiElement classKey = yamlScalar.getParent(); - if (classKey instanceof YAMLKeyValue) { - PsiElement yamlCompoundValue = classKey.getParent(); - if (yamlCompoundValue instanceof YAMLCompoundValue) { - PsiElement serviceKeyValue = yamlCompoundValue.getParent(); - if (serviceKeyValue instanceof YAMLKeyValue) { - Set tags = YamlHelper.collectServiceTags((YAMLKeyValue) serviceKeyValue); - if (!tags.isEmpty()) { - registerTaggedProblems(psiElement, tags, text, holder, lazyServiceCollector); + private void visitXmlElement(@NotNull PsiElement element, @NotNull ProblemsHolder holder) { + String className = getClassNameFromServiceDefinition(element); + if (className != null) { + XmlTag parentOfType = PsiTreeUtil.getParentOfType(element, XmlTag.class); + if (parentOfType != null) { + // attach problems to string value only + PsiElement[] psiElements = element.getChildren(); + if (psiElements.length > 2) { + registerTaggedProblems(psiElements[1], FormUtil.getTags(parentOfType), className, holder, createLazyServiceCollector()); + } } } } - } - } else if (psiElement.getNode().getElementType() == YAMLTokenTypes.SCALAR_KEY && YamlElementPatternHelper.getServiceIdKeyValuePattern().accepts(psiElement.getParent())) { - // Foobar\Foo: ~ - String text = PsiElementUtils.getText(psiElement); - if (StringUtils.isNotBlank(text) && YamlHelper.isClassServiceId(text) && text.contains("\\")) { - PsiElement yamlKeyValue = psiElement.getParent(); - if (yamlKeyValue instanceof YAMLKeyValue && YamlHelper.getYamlKeyValue((YAMLKeyValue) yamlKeyValue, "resource") == null && YamlHelper.getYamlKeyValue((YAMLKeyValue) yamlKeyValue, "exclude") == null) { - Set tags = YamlHelper.collectServiceTags((YAMLKeyValue) yamlKeyValue); - if (!tags.isEmpty()) { - registerTaggedProblems(psiElement, tags, text, holder, lazyServiceCollector); + + private NotNullLazyValue createLazyServiceCollector() { + if (this.serviceCollector == null) { + this.serviceCollector = NotNullLazyValue.lazy(() -> new ContainerCollectionResolver.LazyServiceCollector(holder.getProject())); } + + return this.serviceCollector; } - } + }; } } - private void registerTaggedProblems(@NotNull PsiElement source, @NotNull Set tags, @NotNull String serviceClass, @NotNull ProblemsHolder holder, @NotNull NotNullLazyValue lazyServiceCollector) { + private static void registerTaggedProblems(@NotNull PsiElement source, @NotNull Set tags, @NotNull String serviceClass, @NotNull ProblemsHolder holder, @NotNull NotNullLazyValue lazyServiceCollector) { if (tags.isEmpty()) { return; } diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/inspection/ContainerSettingDeprecatedInspection.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/inspection/ContainerSettingDeprecatedInspection.java index 5a7d56cc8..e43b73522 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/inspection/ContainerSettingDeprecatedInspection.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/inspection/ContainerSettingDeprecatedInspection.java @@ -18,31 +18,48 @@ /** * @author Daniel Espendiller */ -public class ContainerSettingDeprecatedInspection extends LocalInspectionTool { +public class ContainerSettingDeprecatedInspection { + public static class ContainerSettingDeprecatedInspectionYaml extends LocalInspectionTool { + public @NotNull PsiElementVisitor buildVisitor(final @NotNull ProblemsHolder holder, boolean isOnTheFly) { + if (!Symfony2ProjectComponent.isEnabled(holder.getProject())) { + return super.buildVisitor(holder, isOnTheFly); + } - @NotNull - public PsiElementVisitor buildVisitor(final @NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!Symfony2ProjectComponent.isEnabled(holder.getProject())) { - return super.buildVisitor(holder, isOnTheFly); - } + return new PsiElementVisitor() { + @Override + public void visitElement(@NotNull PsiElement element) { + if (element instanceof YAMLKeyValue) { + registerYmlRoutePatternProblem(holder, (YAMLKeyValue) element); + } - return new PsiElementVisitor() { - @Override - public void visitElement(@NotNull PsiElement element) { - if(element instanceof XmlAttribute) { - registerXmlAttributeProblem(holder, (XmlAttribute) element); - } else if(element instanceof YAMLKeyValue) { - registerYmlRoutePatternProblem(holder, (YAMLKeyValue) element); + super.visitElement(element); } + }; + } + } - super.visitElement(element); + public static class ContainerSettingDeprecatedInspectionXml extends LocalInspectionTool { + public @NotNull PsiElementVisitor buildVisitor(final @NotNull ProblemsHolder holder, boolean isOnTheFly) { + if (!Symfony2ProjectComponent.isEnabled(holder.getProject())) { + return super.buildVisitor(holder, isOnTheFly); } - }; + + return new PsiElementVisitor() { + @Override + public void visitElement(@NotNull PsiElement element) { + if (element instanceof XmlAttribute) { + registerXmlAttributeProblem(holder, (XmlAttribute) element); + } + + super.visitElement(element); + } + }; + } } - private void registerYmlRoutePatternProblem(@NotNull ProblemsHolder holder, @NotNull YAMLKeyValue element) { + private static void registerYmlRoutePatternProblem(@NotNull ProblemsHolder holder, @NotNull YAMLKeyValue element) { String s = PsiElementUtils.trimQuote(element.getKeyText()); - if(("factory_class".equals(s) || "factory_method".equals(s) || "factory_service".equals(s)) && YamlElementPatternHelper.getInsideServiceKeyPattern().accepts(element)) { + if (("factory_class".equals(s) || "factory_method".equals(s) || "factory_service".equals(s)) && YamlElementPatternHelper.getInsideServiceKeyPattern().accepts(element)) { // services: // foo: // factory_*: @@ -50,20 +67,20 @@ private void registerYmlRoutePatternProblem(@NotNull ProblemsHolder holder, @Not } } - private void registerXmlAttributeProblem(@NotNull ProblemsHolder holder, @NotNull XmlAttribute xmlAttribute) { + private static void registerXmlAttributeProblem(@NotNull ProblemsHolder holder, @NotNull XmlAttribute xmlAttribute) { String name = xmlAttribute.getName(); - if(!("factory-class".equals(name) || "factory-method".equals(name) || "factory-service".equals(name))) { + if (!("factory-class".equals(name) || "factory-method".equals(name) || "factory-service".equals(name))) { return; } XmlTag xmlTagRoute = PsiElementAssertUtil.getParentOfTypeWithNameOrNull(xmlAttribute, XmlTag.class, "service"); - if(xmlTagRoute != null) { + if (xmlTagRoute != null) { registerProblem(holder, xmlAttribute.getFirstChild()); } } - private void registerProblem(@NotNull ProblemsHolder holder, @Nullable PsiElement target) { - if(target == null) { + private static void registerProblem(@NotNull ProblemsHolder holder, @Nullable PsiElement target) { + if (target == null) { return; } diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/routing/inspection/RouteSettingDeprecatedInspection.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/routing/inspection/RouteSettingDeprecatedInspection.java index 93b93c44f..838394c09 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/routing/inspection/RouteSettingDeprecatedInspection.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/routing/inspection/RouteSettingDeprecatedInspection.java @@ -21,68 +21,90 @@ /** * @author Daniel Espendiller */ -public class RouteSettingDeprecatedInspection extends LocalInspectionTool { +public class RouteSettingDeprecatedInspection { + public static class RouteSettingDeprecatedInspectionYaml extends LocalInspectionTool { + public @NotNull PsiElementVisitor buildVisitor(final @NotNull ProblemsHolder holder, boolean isOnTheFly) { + if (!Symfony2ProjectComponent.isEnabled(holder.getProject())) { + return super.buildVisitor(holder, isOnTheFly); + } - @NotNull - public PsiElementVisitor buildVisitor(final @NotNull ProblemsHolder holder, boolean isOnTheFly) { - if(!Symfony2ProjectComponent.isEnabled(holder.getProject())) { - return super.buildVisitor(holder, isOnTheFly); - } + return new PsiElementVisitor() { + @Override + public void visitElement(@NotNull PsiElement element) { + if (element instanceof YAMLKeyValue yamlKeyValue) { + registerYmlRoutePatternProblem(holder, yamlKeyValue); + } - return new PsiElementVisitor() { - @Override - public void visitElement(PsiElement element) { - if(element instanceof XmlAttributeValue) { - registerAttributeRequirementProblem(holder, (XmlAttributeValue) element, "_method"); - registerAttributeRequirementProblem(holder, (XmlAttributeValue) element, "_scheme"); - } else if(element instanceof XmlAttribute) { - registerRoutePatternProblem(holder, (XmlAttribute) element); - } else if(element instanceof YAMLKeyValue) { - registerYmlRoutePatternProblem(holder, (YAMLKeyValue) element); + super.visitElement(element); } + }; + } + } - super.visitElement(element); + public static class RouteSettingDeprecatedInspectionXml extends LocalInspectionTool { + public @NotNull PsiElementVisitor buildVisitor(final @NotNull ProblemsHolder holder, boolean isOnTheFly) { + if (!Symfony2ProjectComponent.isEnabled(holder.getProject())) { + return super.buildVisitor(holder, isOnTheFly); } - }; + + return new PsiElementVisitor() { + @Override + public void visitElement(@NotNull PsiElement element) { + if (element instanceof XmlAttributeValue xmlAttributeValue) { + registerAttributeRequirementProblem(holder, xmlAttributeValue, "_method"); + registerAttributeRequirementProblem(holder, xmlAttributeValue, "_scheme"); + } else if (element instanceof XmlAttribute xmlAttribute) { + registerRoutePatternProblem(holder, xmlAttribute); + } + + super.visitElement(element); + } + }; + } } - private void registerYmlRoutePatternProblem(@NotNull ProblemsHolder holder, @NotNull YAMLKeyValue element) { + private static void registerYmlRoutePatternProblem(@NotNull ProblemsHolder holder, @NotNull YAMLKeyValue element) { + PsiElement key = element.getKey(); + if (key == null) { + return; + } + String s = PsiElementUtils.trimQuote(element.getKeyText()); if("pattern".equals(s) && YamlHelper.isRoutingFile(element.getContainingFile())) { // pattern: foo - holder.registerProblem(element.getKey(), "Pattern is deprecated; use path instead", ProblemHighlightType.LIKE_DEPRECATED); + holder.registerProblem(key, "Pattern is deprecated; use path instead", ProblemHighlightType.LIKE_DEPRECATED); } else if(("_method".equals(s) || "_scheme".equals(s)) && YamlHelper.isRoutingFile(element.getContainingFile())) { // requirements: { _method: 'foo', '_scheme': 'foo' } YAMLKeyValue parentOfType = PsiTreeUtil.getParentOfType(element, YAMLKeyValue.class); if(parentOfType != null && "requirements".equals(parentOfType.getKeyText())) { - holder.registerProblem(element.getKey(), String.format("The '%s' requirement is deprecated", s), ProblemHighlightType.LIKE_DEPRECATED); + holder.registerProblem(key, String.format("The '%s' requirement is deprecated", s), ProblemHighlightType.LIKE_DEPRECATED); } } } - private void registerRoutePatternProblem(@NotNull ProblemsHolder holder, @NotNull XmlAttribute xmlAttribute) { - if(!"pattern".equals(xmlAttribute.getName())) { + private static void registerRoutePatternProblem(@NotNull ProblemsHolder holder, @NotNull XmlAttribute xmlAttribute) { + if (!"pattern".equals(xmlAttribute.getName())) { return; } XmlTag xmlTagRoute = PsiElementAssertUtil.getParentOfTypeWithNameOrNull(xmlAttribute, XmlTag.class, "route"); - if(xmlTagRoute != null && xmlAttribute.getFirstChild() != null) { + if (xmlTagRoute != null && xmlAttribute.getFirstChild() != null) { holder.registerProblem(xmlAttribute.getFirstChild(), "Pattern is deprecated; use path instead", ProblemHighlightType.LIKE_DEPRECATED); } } - private void registerAttributeRequirementProblem(@NotNull ProblemsHolder holder, @NotNull XmlAttributeValue xmlAttributeValue, @NotNull final String requirementAttribute) { - if(!xmlAttributeValue.getValue().equals(requirementAttribute)) { + private static void registerAttributeRequirementProblem(@NotNull ProblemsHolder holder, @NotNull XmlAttributeValue xmlAttributeValue, @NotNull final String requirementAttribute) { + if (!xmlAttributeValue.getValue().equals(requirementAttribute)) { return; } XmlAttribute xmlAttributeKey = PsiElementAssertUtil.getParentOfTypeWithNameOrNull(xmlAttributeValue, XmlAttribute.class, "key"); - if(xmlAttributeKey != null) { + if (xmlAttributeKey != null) { XmlTag xmlTagDefault = PsiElementAssertUtil.getParentOfTypeWithNameOrNull(xmlAttributeKey, XmlTag.class, "requirement"); - if(xmlTagDefault != null) { + if (xmlTagDefault != null) { XmlTag xmlTagRoute = PsiElementAssertUtil.getParentOfTypeWithNameOrNull(xmlTagDefault, XmlTag.class, "route"); - if(xmlTagRoute != null) { + if (xmlTagRoute != null) { // attach to attribute token only we dont want " or ' char included PsiElement target = findAttributeValueToken(xmlAttributeValue, requirementAttribute); @@ -99,7 +121,7 @@ private void registerAttributeRequirementProblem(@NotNull ProblemsHolder holder, * XmlToken: "attributeText" * XmlToken: "'" */ - private PsiElement findAttributeValueToken(@NotNull XmlAttributeValue xmlAttributeValue, @NotNull final String attributeText) { + private static PsiElement findAttributeValueToken(@NotNull XmlAttributeValue xmlAttributeValue, @NotNull final String attributeText) { return ContainerUtil.find(xmlAttributeValue.getChildren(), psiElement -> psiElement instanceof XmlToken && attributeText.equals(psiElement.getText()) ); diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index ae3a27d2e..45122887a 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -392,11 +392,20 @@ implementationClass="fr.adrienbrault.idea.symfony2plugin.codeInspection.service.ServiceDeprecatedClassesInspection$ServiceDeprecatedClassesInspectionPhp"/> - + language="yaml" + implementationClass="fr.adrienbrault.idea.symfony2plugin.codeInspection.service.TaggedExtendsInterfaceClassInspection$TaggedExtendsInterfaceClassInspectionYaml"/> + + + - + enabledByDefault="true" + level="WARNING" + language="yaml" + implementationClass="fr.adrienbrault.idea.symfony2plugin.routing.inspection.RouteSettingDeprecatedInspection$RouteSettingDeprecatedInspectionYaml"/> + + - + enabledByDefault="true" + level="WARNING" + language="yaml" + implementationClass="fr.adrienbrault.idea.symfony2plugin.dic.inspection.ContainerSettingDeprecatedInspection$ContainerSettingDeprecatedInspectionYaml"/> + + + +Deprecated Symfony container settings usage + + + \ No newline at end of file diff --git a/src/main/resources/inspectionDescriptions/RouteSettingDeprecated.html b/src/main/resources/inspectionDescriptions/RouteSettingDeprecatedInspectionXml.html similarity index 100% rename from src/main/resources/inspectionDescriptions/RouteSettingDeprecated.html rename to src/main/resources/inspectionDescriptions/RouteSettingDeprecatedInspectionXml.html diff --git a/src/main/resources/inspectionDescriptions/RouteSettingDeprecatedInspectionYaml.html b/src/main/resources/inspectionDescriptions/RouteSettingDeprecatedInspectionYaml.html new file mode 100644 index 000000000..96ff4aa03 --- /dev/null +++ b/src/main/resources/inspectionDescriptions/RouteSettingDeprecatedInspectionYaml.html @@ -0,0 +1,6 @@ + + +Route settings deprecated inspection + + + \ No newline at end of file diff --git a/src/main/resources/inspectionDescriptions/TaggedExtendsInterfaceClass.html b/src/main/resources/inspectionDescriptions/TaggedExtendsInterfaceClassXml.html similarity index 73% rename from src/main/resources/inspectionDescriptions/TaggedExtendsInterfaceClass.html rename to src/main/resources/inspectionDescriptions/TaggedExtendsInterfaceClassXml.html index b9676eb0d..f0f022d54 100644 --- a/src/main/resources/inspectionDescriptions/TaggedExtendsInterfaceClass.html +++ b/src/main/resources/inspectionDescriptions/TaggedExtendsInterfaceClassXml.html @@ -2,6 +2,6 @@ Tagged service is missing extends or interface statement -See more on Symfony2 doc: The Dependency Injection Tags +See more on Symfony2 doc: The Dependency Injection Tags \ No newline at end of file diff --git a/src/main/resources/inspectionDescriptions/TaggedExtendsInterfaceClassYaml.html b/src/main/resources/inspectionDescriptions/TaggedExtendsInterfaceClassYaml.html new file mode 100644 index 000000000..f0f022d54 --- /dev/null +++ b/src/main/resources/inspectionDescriptions/TaggedExtendsInterfaceClassYaml.html @@ -0,0 +1,7 @@ + + +Tagged service is missing extends or interface statement + +See more on Symfony2 doc: The Dependency Injection Tags + + \ No newline at end of file