[devkit] plugin.xml: verify <override-text> capitalization

GitOrigin-RevId: 3eedf536a0c975ab3aa825262a27b5005707998f
This commit is contained in:
Yann Cébron
2019-12-09 11:37:32 +00:00
committed by intellij-monorepo-bot
parent 481d701c47
commit 336042ac45
3 changed files with 43 additions and 9 deletions
@@ -28,10 +28,7 @@ import com.intellij.xml.util.XmlUtil;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.devkit.dom.Action;
import org.jetbrains.idea.devkit.dom.ActionOrGroup;
import org.jetbrains.idea.devkit.dom.Extension;
import org.jetbrains.idea.devkit.dom.IdeaPlugin;
import org.jetbrains.idea.devkit.dom.*;
import java.util.List;
import java.util.Set;
@@ -48,11 +45,24 @@ public class PluginXmlCapitalizationInspection extends BasicDomElementsInspectio
if (element instanceof ActionOrGroup) {
checkActionOrGroup((ActionOrGroup)element, holder);
}
else if (element instanceof OverrideText) {
checkOverrideText((OverrideText)element, holder);
}
else if (element instanceof Extension) {
checkExtension((Extension)element, holder);
}
}
private static void checkOverrideText(OverrideText overrideText, DomElementAnnotationHolder holder) {
if (checkCapitalization(holder, overrideText.getText(), Nls.Capitalization.Title)) return;
Action action = overrideText.getParentOfType(Action.class, true);
assert action != null;
final String resourceKey = "action." + action.getId().getStringValue() + "." + overrideText.getPlace().getStringValue() + ".text";
checkPropertyCapitalization(holder, overrideText, Nls.Capitalization.Title,
resourceKey, true);
}
private static void checkActionOrGroup(ActionOrGroup actionOrGroup, DomElementAnnotationHolder holder) {
checkActionOrGroupCapitalization(holder, actionOrGroup, ActionOrGroupText.TEXT);
checkActionOrGroupCapitalization(holder, actionOrGroup, ActionOrGroupText.DESCRIPTION);
@@ -90,7 +100,16 @@ public class PluginXmlCapitalizationInspection extends BasicDomElementsInspectio
final Nls.Capitalization capitalization = actionOrGroupText.myCapitalization;
if (checkCapitalization(holder, genericDomValue, capitalization)) return;
final IdeaPlugin ideaPlugin = DomUtil.getParentOfType(actionOrGroup, IdeaPlugin.class, true);
checkPropertyCapitalization(holder, actionOrGroup, capitalization,
"action." + actionOrGroup.getId().getStringValue() + actionOrGroupText.mySuffix,
actionOrGroupText.myRequired.apply(actionOrGroup));
}
private static void checkPropertyCapitalization(DomElementAnnotationHolder holder,
DomElement domElement,
Nls.Capitalization capitalization,
String resourceKey, boolean required) {
final IdeaPlugin ideaPlugin = DomUtil.getParentOfType(domElement, IdeaPlugin.class, true);
if (ideaPlugin == null) return;
final XmlElement resourceBundleTag = ideaPlugin.getResourceBundle().getXmlElement();
@@ -103,15 +122,14 @@ public class PluginXmlCapitalizationInspection extends BasicDomElementsInspectio
final PropertiesFileImpl bundleFile = ObjectUtils.tryCast(bundleReference.resolve(), PropertiesFileImpl.class);
if (bundleFile == null) return;
final String resourceKey = "action." + actionOrGroup.getId().getStringValue() + actionOrGroupText.mySuffix;
final Property property = ObjectUtils.tryCast(bundleFile.findPropertyByKey(resourceKey), Property.class);
if (property == null) {
if (actionOrGroupText.myRequired.apply(actionOrGroup)) {
holder.createProblem(actionOrGroup, "Missing resource bundle key '" + resourceKey + "'");
if (required) {
holder.createProblem(domElement, "Missing resource bundle key '" + resourceKey + "'");
}
}
else {
highlightCapitalization(holder, actionOrGroup, property.getValue(), capitalization, property);
highlightCapitalization(holder, domElement, property.getValue(), capitalization, property);
}
}
@@ -8,3 +8,6 @@ action.BundleActionWrongCasing.description=lower case description
action.BundleGroupWrongCasing.text=group lower case text
action.BundleGroupWrongCasing.description=group lower case description
action.OverrideBundleAction.ViaBundle.text=Action Text Override Via Bundle
action.OverrideBundleAction.ViaBundleWrongCase.text=Action Text Override Via Bundle lower case
@@ -33,5 +33,18 @@
<group id="BundleGroupWithoutAnyKeys"/>
<<warning descr="String 'group lower case description' is not properly capitalized. It should have sentence capitalization"><warning descr="String 'group lower case text' is not properly capitalized. It should have title capitalization">group</warning></warning> id="BundleGroupWrongCasing"/>
<!-- override-text -->
<action id="OverrideAction" text="Override Action Text">
<override-text place="MainEditor" text="Main Editor Action Title"/>
<override-text place="MainEditorWrong" text="<warning descr="String 'lower case' is not properly capitalized. It should have title capitalization">lower case</warning>"/>
</action>
<action id="OverrideBundleAction" text="Override Bundle Action Text">
<override-text place="ViaBundle"/>
<<warning descr="String 'Action Text Override Via Bundle lower case' is not properly capitalized. It should have title capitalization">override-text</warning> place="ViaBundleWrongCase"/>
<<warning descr="Missing resource bundle key 'action.OverrideBundleAction.ViaBundleMissingKey.text'">override-text</warning> place="ViaBundleMissingKey"/>
</action>
</actions>
</idea-plugin>