Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.62 KB | None | 0 0
  1. <string name="cancel">Cancel</string>
  2. <string name="activity_cancel_text">Cancel</string>
  3.  
  4. package com.example.lint.checks;
  5.  
  6. import com.android.SdkConstants;
  7. import com.android.resources.ResourceFolderType;
  8. import com.android.tools.lint.detector.api.Category;
  9. import com.android.tools.lint.detector.api.Context;
  10. import com.android.tools.lint.detector.api.Implementation;
  11. import com.android.tools.lint.detector.api.Issue;
  12. import com.android.tools.lint.detector.api.Location;
  13. import com.android.tools.lint.detector.api.ResourceXmlDetector;
  14. import com.android.tools.lint.detector.api.Scope;
  15. import com.android.tools.lint.detector.api.Severity;
  16. import com.android.tools.lint.detector.api.XmlContext;
  17.  
  18. import org.jetbrains.annotations.NotNull;
  19. import org.jetbrains.annotations.Nullable;
  20. import org.w3c.dom.Element;
  21.  
  22. import java.io.File;
  23. import java.util.Collection;
  24. import java.util.Collections;
  25. import java.util.HashMap;
  26. import java.util.Map;
  27.  
  28. public class StringDupeDetector extends ResourceXmlDetector {
  29.  
  30. public StringDupeDetector() {}
  31.  
  32. public static final Issue ISSUE = Issue.create(
  33. // ID: used in @SuppressLint warnings etc
  34. "StringDupe",
  35.  
  36. // Title -- shown in the IDE's preference dialog, as category headers in the
  37. // Analysis results window, etc
  38. "String Dupe",
  39.  
  40. // Full explanation of the issue; you can use some markdown markup such as
  41. // `monospace`, *italic*, and **bold**.
  42. "This check highlights string/color/dimen literals in code which duplicates " +
  43. "the string resources. Blah blah blah.n" +
  44. "n" +
  45. "Another paragraph here.n",
  46. Category.CORRECTNESS,
  47. 6,
  48. Severity.ERROR,
  49. new Implementation(
  50. StringDupeDetector.class,
  51. Scope.RESOURCE_FILE_SCOPE));
  52.  
  53. private static final Map<String, String> stringResourceMap = new HashMap<>(); // string, stringId
  54. private static final Map<String, Location> violationsMap = new HashMap(); // string, location
  55. private static final String ISSUE_MSG_FORMAT = "WARNING! %s is already defined as %s.";
  56.  
  57. @Nullable
  58. @Override
  59. public Collection<String> getApplicableElements() {
  60. return Collections.singletonList(SdkConstants.TAG_STRING);
  61. }
  62.  
  63. @Override
  64. public boolean appliesTo(ResourceFolderType folderType) {
  65. return folderType == ResourceFolderType.VALUES;
  66. }
  67.  
  68.  
  69. @Override
  70. public void visitElement(@NotNull XmlContext context, @NotNull Element element) {
  71. final String string = element.getTextContent();
  72. final String stringId = element.getAttribute(SdkConstants.ATTR_NAME);
  73.  
  74. if (element.getTextContent().equalsIgnoreCase("More Instructions")) {
  75. context.report(ISSUE, element, context.getLocation(element), "Contains More Instructions");
  76. }
  77.  
  78. // if (stringResourceMap.containsKey(string)) {
  79. // // found a dupe!
  80. // violationsMap.put(string, context.getLocation(element));
  81. // context.report(ISSUE, element, context.getLocation(element), String.format(ISSUE_MSG_FORMAT, string, stringId));
  82. // } else {
  83. // stringResourceMap.put(string, stringId);
  84. // }
  85.  
  86.  
  87. /*
  88. if (stringResourceMap.containsKey(string)) {
  89. // found a dupe!
  90. violationsMap.put(string, context.getLocation(element));
  91. //context.report(ISSUE, element, context.getLocation(element), String.format(ISSUE_MSG_FORMAT, string, stringId));
  92. } else {
  93. stringResourceMap.put(string, stringId);
  94. }
  95. */
  96. }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement