From e6a6f609ea547759d52a79d09c0b3249bb2ee59b Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Wed, 30 Nov 2016 16:37:37 +0300 Subject: [PATCH] IDEA-164610 Quick documentation should escape angle brackets at the value of a String field referred via @value (javadoc tag) also add quotes to string value, and convert value into a link to corresponding field's javadoc, like javadoc tool does --- .../intellij/codeInsight/javadoc/JavaDocInfoGenerator.java | 5 ++++- .../testData/codeInsight/javadocIG/escapingStringValue.html | 1 + .../testData/codeInsight/javadocIG/escapingStringValue.java | 6 ++++++ .../testData/codeInsight/javadocIG/valueInMethod.html | 2 +- .../testData/codeInsight/javadocIG/valueInMethodNoHash.html | 2 +- .../codeInsight/javadoc/JavaDocInfoGeneratorTest.java | 4 ++++ 6 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/javadocIG/escapingStringValue.html create mode 100644 java/java-tests/testData/codeInsight/javadocIG/escapingStringValue.java diff --git a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java index ad600c2ec778..3abdcbbdbb35 100644 --- a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java +++ b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java @@ -1463,7 +1463,10 @@ public class JavaDocInfoGenerator { } if (value != null) { - buffer.append(value); + String valueText = StringUtil.escapeXml(value.toString()); + if (value instanceof String) valueText = '"' + valueText + '"'; + if (valueField.equals(myElement)) buffer.append(valueText); // don't generate link to itself + else generateLink(buffer, valueField, valueText, true); } else { buffer.append(element.getText()); diff --git a/java/java-tests/testData/codeInsight/javadocIG/escapingStringValue.html b/java/java-tests/testData/codeInsight/javadocIG/escapingStringValue.html new file mode 100644 index 000000000000..5ece92695d12 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/escapingStringValue.html @@ -0,0 +1 @@ + A
public static void JAVADOC_ME()
The value of B is "a<b". \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/escapingStringValue.java b/java/java-tests/testData/codeInsight/javadocIG/escapingStringValue.java new file mode 100644 index 000000000000..aa8861cd57f8 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/escapingStringValue.java @@ -0,0 +1,6 @@ +class A { + public static String B = "a A
public static void JAVADOC_ME()
The value of A is 23. \ No newline at end of file + A
public static void JAVADOC_ME()
The value of A is 23. \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/valueInMethodNoHash.html b/java/java-tests/testData/codeInsight/javadocIG/valueInMethodNoHash.html index 8342feaa01c7..4528aefd3d37 100644 --- a/java/java-tests/testData/codeInsight/javadocIG/valueInMethodNoHash.html +++ b/java/java-tests/testData/codeInsight/javadocIG/valueInMethodNoHash.html @@ -1 +1 @@ - A
public static void JAVADOC_ME()
The value of A is 23. \ No newline at end of file + A
public static void JAVADOC_ME()
The value of A is 23. \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java index 07eb77bbd6e3..c95ba0d75615 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java @@ -65,6 +65,10 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase { doTestMethod(); } + public void testEscapingStringValue() throws Exception { + doTestMethod(); + } + public void testIdeadev2326() throws Exception { doTestMethod(); }