]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4326 Use regex inspired from StackOverflow to validate tags
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Fri, 17 Jan 2014 16:45:21 +0000 (17:45 +0100)
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Fri, 17 Jan 2014 16:48:54 +0000 (17:48 +0100)
sonar-plugin-api/src/main/java/org/sonar/api/rule/RuleTagFormat.java
sonar-plugin-api/src/test/java/org/sonar/api/rule/RuleTagFormatTest.java

index 68bdf27c0b46106a7157d362ecf691e12d388542..998a31950d8cb33e3add0010edd5ac8692ad7750 100644 (file)
@@ -26,12 +26,16 @@ import org.apache.commons.lang.StringUtils;
  */
 public class RuleTagFormat {
 
+  // Allowed characters are the same as those on StackOverflow
+  // see http://meta.stackoverflow.com/questions/22624/what-symbols-characters-are-not-allowed-in-tags
+  private static final String VALID_CHARACTERS_REGEX = "^[a-z0-9\\+#\\-\\.]+$";
+
   private RuleTagFormat() {
     // only static methods
   }
 
   public static boolean isValid(String tag) {
-    return StringUtils.isNotBlank(tag) && StringUtils.indexOf(tag, " ") < 0;
+    return StringUtils.isNotBlank(tag) && tag.matches(VALID_CHARACTERS_REGEX);
   }
 
   public static void validate(String tag) {
index c4b9263588c44058d5ed4abece7b449ed77b071e..3197d4eca167751b0df819e59a38ae79a6c0270d 100644 (file)
@@ -31,8 +31,14 @@ public class RuleTagFormatTest {
     assertThat(RuleTagFormat.isValid("")).isFalse();
     assertThat(RuleTagFormat.isValid(" ")).isFalse();
     assertThat(RuleTagFormat.isValid("coding style")).isFalse();
+    assertThat(RuleTagFormat.isValid("Style")).isFalse();
+    assertThat(RuleTagFormat.isValid("sTyle")).isFalse();
+    assertThat(RuleTagFormat.isValid("@style")).isFalse();
 
     assertThat(RuleTagFormat.isValid("style")).isTrue();
+    assertThat(RuleTagFormat.isValid("c++")).isTrue();
+    assertThat(RuleTagFormat.isValid("f#")).isTrue();
+    assertThat(RuleTagFormat.isValid("c++11")).isTrue();
   }
 
   @Test