@Null Annotations, etc

This commit is contained in:
林万程
2022-10-23 20:24:25 +08:00
parent 032b50b23f
commit 44f024ac21
63 changed files with 761 additions and 678 deletions

View File

@@ -31,7 +31,7 @@ public class GoLangDoc extends BaseLangDoc {
@Override
public @Nullable <T extends SettingsInfo> String resolveDocRaw(@NotNull T lineInfo, @NotNull PsiElement resolve) {
List<PsiComment> comments = GoDocumentationProvider.getCommentsForElement(resolve);
@NotNull List<PsiComment> comments = GoDocumentationProvider.getCommentsForElement(resolve);
return GoDocumentationProvider.getCommentText(comments, false);
}
}

View File

@@ -29,12 +29,12 @@ public class JsLangDoc extends BaseLangDoc {
@Override
public @Nullable <T extends SettingsInfo> String resolveDocRaw(@NotNull T lineInfo, @NotNull PsiElement resolve) {
PsiComment psiComment = JSDocumentationUtils.findOwnDocCommentForImplicitElement(resolve);
@Nullable PsiComment psiComment = JSDocumentationUtils.findOwnDocCommentForImplicitElement(resolve);
if (psiComment == null) {
return null;
}
String text = psiComment.getText();
if (text!=null) {
if (text != null) {
return text;
}
if (!lineInfo.appSettings.jsDoc) {

View File

@@ -25,7 +25,7 @@ public class JsonLangDoc extends BaseLangDoc {
@Override
public @Nullable String findRefDoc(@NotNull LineInfo lineInfo, @NotNull PsiElement element) {
PsiElement start = lineInfo.viewProvider.findElementAt(lineInfo.startOffset);
@Nullable PsiElement start = lineInfo.viewProvider.findElementAt(lineInfo.startOffset);
if (start == null) {
return null;
}
@@ -41,10 +41,10 @@ public class JsonLangDoc extends BaseLangDoc {
if (!(ref instanceof JsonProperty)) {
return null;
}
JsonProperty jsonProperty = (JsonProperty) ref;
PsiReference[] references = jsonProperty.getNameElement().getReferences();
for (PsiReference reference : references) {
PsiElement resolve = null;
@NotNull JsonProperty jsonProperty = (JsonProperty) ref;
@NotNull PsiReference[] references = jsonProperty.getNameElement().getReferences();
for (@NotNull PsiReference reference : references) {
@Nullable PsiElement resolve = null;
try {
resolve = reference.resolve();
} catch (Throwable ignore) {
@@ -53,7 +53,7 @@ public class JsonLangDoc extends BaseLangDoc {
if (resolve == null) {
continue;
}
String doc = BaseLangDoc.resolveDoc(lineInfo, resolve);
@Nullable String doc = BaseLangDoc.resolveDoc(lineInfo, resolve);
if (doc != null) {
return doc;
}

View File

@@ -39,8 +39,8 @@ public class SqlLangDoc extends BaseLangDoc {
} catch (Throwable e) {
return null;
}
for (DbElement dbElement : relatedDbElements) {
String refDoc = dbElement.getComment();
for (@NotNull DbElement dbElement : relatedDbElements) {
@Nullable String refDoc = dbElement.getComment();
if (refDoc != null && !DocSkip.skipDoc(lineInfo.appSettings, lineInfo.projectSettings, refDoc)) {
return refDoc;
}

View File

@@ -41,7 +41,7 @@ public abstract class BaseLangDoc extends EditorLinePainter {
}
public static @Nullable String langDoc(@NotNull LineInfo lineInfo) {
PsiElement element = lineInfo.viewProvider.findElementAt(lineInfo.endOffset);
@Nullable PsiElement element = lineInfo.viewProvider.findElementAt(lineInfo.endOffset);
if (element == null) {
// file end
element = lineInfo.viewProvider.findElementAt(lineInfo.endOffset - 1);
@@ -49,7 +49,7 @@ public abstract class BaseLangDoc extends EditorLinePainter {
return null;
}
}
Language language = PsiElementTo.language(element);
@NotNull Language language = PsiElementTo.language(element);
BaseLangDoc lineEnd = LANG_DOC_MAP.get(language.getID());
if (lineEnd != null && lineEnd.show(lineInfo)) {
return lineEnd.findRefDoc(lineInfo, element);
@@ -64,15 +64,15 @@ public abstract class BaseLangDoc extends EditorLinePainter {
*/
@Nullable
public String findRefDoc(@NotNull LineInfo lineInfo, @NotNull PsiElement element) {
Class<? extends PsiElement> refClass = getRefClass();
@Nullable Class<? extends PsiElement> refClass = getRefClass();
if (refClass == null) {
return null;
}
String doc = null;
PsiElement refElement = element;
@Nullable String doc = null;
@Nullable PsiElement refElement = element;
while ((refElement = Prev.prevRefChild(lineInfo, refElement, refClass)) != null) {
PsiElement parent = refElement.getParent();
String filterDoc = refElementDoc(lineInfo, parent);
@Nullable String filterDoc = refElementDoc(lineInfo, parent);
if (filterDoc != null) {
doc = filterDoc;
refElement = parent;
@@ -90,7 +90,7 @@ public abstract class BaseLangDoc extends EditorLinePainter {
String text = refElement.getText();
boolean set = text.startsWith("set");
PsiElement parent = refElement.getParent();
String before = refElementDoc(lineInfo, parent);
@Nullable String before = refElementDoc(lineInfo, parent);
if (before != null) {
doc = mergeDoc(set, lineInfo.appSettings.getToSet, before, doc);
}
@@ -115,9 +115,10 @@ public abstract class BaseLangDoc extends EditorLinePainter {
/**
* Override like SQL
*/
@Nullable
protected <T extends SettingsInfo> String refElementDoc(@NotNull T lineInfo,
@NotNull PsiElement refElement) {
String refDoc = refDoc(lineInfo, refElement);
@Nullable String refDoc = refDoc(lineInfo, refElement);
if (refDoc != null && !DocSkip.skipDoc(lineInfo.appSettings, lineInfo.projectSettings, refDoc)) {
return refDoc;
}
@@ -130,22 +131,23 @@ public abstract class BaseLangDoc extends EditorLinePainter {
@Nullable
protected <T extends SettingsInfo> String refDoc(@NotNull T lineInfo, @NotNull PsiElement ref) {
// kotlin ref.getReference() == null but ref.getReferences().length == 2
PsiReference[] references = ref.getReferences();
@NotNull PsiReference[] references = ref.getReferences();
if (references.length < 1) {
return null;
}
for (PsiReference reference : references) {
PsiElement resolve;
for (@NotNull PsiReference reference : references) {
@Nullable PsiElement resolve;
try {
resolve = reference.resolve();
} catch (Throwable e) {
// 2021.3: Slow operations are prohibited on EDT. See SlowOperations.assertSlowOperationsAreAllowed javadoc.
// 2021.3: Slow operations are prohibited on EDT.
// See SlowOperations.assertSlowOperationsAreAllowed javadoc.
return null;
}
if (resolve == null) {
return null;
}
String resolveDoc = resolveDoc(lineInfo, resolve);
@Nullable String resolveDoc = resolveDoc(lineInfo, resolve);
if (resolveDoc != null) {
return resolveDoc;
}
@@ -153,9 +155,10 @@ public abstract class BaseLangDoc extends EditorLinePainter {
return null;
}
public static @Nullable <T extends SettingsInfo> String resolveDoc(T settingsInfo, PsiElement psiElement) {
public static @Nullable <T extends SettingsInfo> String resolveDoc(@NotNull T settingsInfo,
@NotNull PsiElement psiElement) {
// support like java <-> kotlin
Language language = PsiElementTo.language(psiElement);
@NotNull Language language = PsiElementTo.language(psiElement);
BaseLangDoc lineEnd = LANG_DOC_MAP.get(language.getID());
if (lineEnd == null) {
return null;
@@ -168,12 +171,12 @@ public abstract class BaseLangDoc extends EditorLinePainter {
*/
@Nullable
protected <T extends SettingsInfo> String resolveDocPrint(@NotNull T lineInfo, @NotNull PsiElement resolve) {
String s = resolveDocRaw(lineInfo, resolve);
@Nullable String s = resolveDocRaw(lineInfo, resolve);
if (s == null) {
return null;
}
String cutDoc = DocFilter.cutDoc(s, lineInfo.appSettings, true);
String filterDoc = DocFilter.filterDoc(cutDoc, lineInfo.appSettings, lineInfo.projectSettings);
@NotNull String cutDoc = DocFilter.cutDoc(s, lineInfo.appSettings, true);
@NotNull String filterDoc = DocFilter.filterDoc(cutDoc, lineInfo.appSettings, lineInfo.projectSettings);
if (filterDoc.trim().length() == 0) {
return null;
}
@@ -185,17 +188,18 @@ public abstract class BaseLangDoc extends EditorLinePainter {
*/
@Nullable
protected <T extends SettingsInfo> String resolveDocRaw(@NotNull T lineInfo, @NotNull PsiElement resolve) {
FileViewProvider viewProvider = PsiElementTo.viewProvider(resolve);
@Nullable FileViewProvider viewProvider = PsiElementTo.viewProvider(resolve);
if (viewProvider == null) {
return null;
}
String doc = ResolveDoc.fromLineEnd(lineInfo, resolve, viewProvider);
@Nullable String doc = ResolveDoc.fromLineEnd(lineInfo, resolve, viewProvider);
if (doc != null) {
return doc;
}
return ResolveDoc.fromLineUp(lineInfo, resolve, viewProvider, keywords());
}
@NotNull
protected List<String> keywords() {
return Collections.emptyList();
}

View File

@@ -9,7 +9,7 @@ public abstract class BaseTagLangDoc<DocElement> extends BaseLangDoc {
@Override
public @Nullable <T extends SettingsInfo> String resolveDocPrint(@NotNull T lineInfo, @NotNull PsiElement resolve) {
DocElement docElement = toDocElement(resolve);
@Nullable DocElement docElement = toDocElement(resolve);
if (docElement == null) {
return null;
}
@@ -22,12 +22,12 @@ public abstract class BaseTagLangDoc<DocElement> extends BaseLangDoc {
return null;
}
// desc
String descDoc = descDoc(lineInfo, docElement).trim();
String desc = DocFilter.filterDoc(descDoc, lineInfo.appSettings, lineInfo.projectSettings);
@NotNull String descDoc = descDoc(lineInfo, docElement).trim();
@NotNull String desc = DocFilter.filterDoc(descDoc, lineInfo.appSettings, lineInfo.projectSettings);
// tag
StringBuilder tagStrBuilder = new StringBuilder();
String[] names = lineInfo.tagNames();
for (String name : names) {
@NotNull StringBuilder tagStrBuilder = new StringBuilder();
@NotNull String[] names = lineInfo.tagNames();
for (@NotNull String name : names) {
appendTag(lineInfo, tagStrBuilder, docElement, name);
}
if (desc.length() > 0) {
@@ -36,7 +36,7 @@ public abstract class BaseTagLangDoc<DocElement> extends BaseLangDoc {
}
tagStrBuilder.insert(0, desc);
}
String text = tagStrBuilder.toString().trim();
@NotNull String text = tagStrBuilder.toString().trim();
if (text.length() == 0) {
return null;
}

View File

@@ -3,7 +3,6 @@ package io.github.linwancen.plugin.show.lang.base;
import io.github.linwancen.plugin.show.settings.AppSettingsState;
import io.github.linwancen.plugin.show.settings.ProjectSettingsState;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -33,10 +32,10 @@ public class DocFilter {
*/
@NotNull
public static String cutDoc(String text,
AppSettingsState appSettings, boolean deletePrefix) {
@NotNull AppSettingsState appSettings, boolean deletePrefix) {
String[] split = LINE_SEPARATOR_PATTERN.split(text);
int lineCount = 0;
StringBuilder sb = new StringBuilder();
@NotNull StringBuilder sb = new StringBuilder();
for (String s : split) {
if (deletePrefix) {
s = DOC_PATTERN.matcher(s).replaceAll("");
@@ -64,8 +63,8 @@ public class DocFilter {
*/
@NotNull
public static String filterDoc(@NotNull String text,
AppSettingsState appSettings,
ProjectSettingsState projectSettings) {
@NotNull AppSettingsState appSettings,
@NotNull ProjectSettingsState projectSettings) {
// docGetEffect first because default false
if (projectSettings.docGetEffect && projectSettings.projectFilterEffective) {
return filterDoc(text, projectSettings.docGet);
@@ -79,7 +78,7 @@ public class DocFilter {
@NotNull
public static String filterDoc(@NotNull String text, @NotNull Pattern docGet) {
// if effect skip check empty
Matcher m = docGet.matcher(text);
@NotNull Matcher m = docGet.matcher(text);
if (m.find()) {
return m.group(m.groupCount());
}
@@ -93,7 +92,7 @@ public class DocFilter {
* trim end with space
*/
public static void addHtml(@NotNull StringBuilder sb, @NotNull String s) {
String deleteHtml = HTML_PATTERN.matcher(s).replaceAll("").trim();
@NotNull String deleteHtml = HTML_PATTERN.matcher(s).replaceAll("").trim();
if (deleteHtml.length() > 0) {
sb.append(deleteHtml).append(" ");
}

View File

@@ -3,6 +3,7 @@ package io.github.linwancen.plugin.show.lang.base;
import io.github.linwancen.plugin.show.settings.AppSettingsState;
import io.github.linwancen.plugin.show.settings.ProjectSettingsState;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.regex.Pattern;
@@ -10,7 +11,8 @@ public class DocSkip {
private DocSkip() {}
public static boolean skipSign(AppSettingsState appSettings, ProjectSettingsState projectSettings, String text) {
public static boolean skipSign(@NotNull AppSettingsState appSettings,
@NotNull ProjectSettingsState projectSettings, String text) {
return skipText(text,
projectSettings.globalFilterEffective, appSettings.lineInclude, appSettings.lineExclude,
projectSettings.projectFilterEffective, projectSettings.lineInclude, projectSettings.lineExclude);
@@ -18,7 +20,8 @@ public class DocSkip {
private static final Pattern NOT_ASCII_PATTERN = Pattern.compile("[^\u0000-\u007f]");
public static boolean skipDoc(AppSettingsState appSettings, ProjectSettingsState projectSettings, String text) {
public static boolean skipDoc(@NotNull AppSettingsState appSettings,
@NotNull ProjectSettingsState projectSettings, @NotNull String text) {
if (appSettings.skipAscii && !NOT_ASCII_PATTERN.matcher(text).find()) {
return true;
}
@@ -27,9 +30,10 @@ public class DocSkip {
projectSettings.projectFilterEffective, projectSettings.docInclude, projectSettings.docExclude);
}
static boolean skipText(String text,
boolean appFilterEffective, Pattern appDocInclude, Pattern appDocExclude,
boolean projectFilterEffective, Pattern projectDocInclude, Pattern projectDocExclude
static boolean skipText(@Nullable String text,
boolean appFilterEffective, @NotNull Pattern appDocInclude, @NotNull Pattern appDocExclude,
boolean projectFilterEffective, @NotNull Pattern projectDocInclude,
@NotNull Pattern projectDocExclude
) {
if (text == null) {
return true;
@@ -44,21 +48,21 @@ public class DocSkip {
return false;
}
static boolean skipText(@NotNull String text, Pattern include, Pattern exclude) {
static boolean skipText(@NotNull String text, @NotNull Pattern include, @NotNull Pattern exclude) {
if (exclude(text, exclude)) {
return true;
}
return !include(text, include);
}
static boolean include(@NotNull String text, Pattern include) {
static boolean include(@NotNull String text, @NotNull Pattern include) {
if (include.pattern().length() == 0) {
return true;
}
return include.matcher(text).find();
}
static boolean exclude(@NotNull String text, Pattern exclude) {
static boolean exclude(@NotNull String text, @NotNull Pattern exclude) {
if (exclude.pattern().length() == 0) {
return false;
}

View File

@@ -15,6 +15,7 @@ public class Prev {
private Prev() {}
@Nullable
public static PsiElement prevRefChild(@NotNull LineInfo lineInfo, @NotNull PsiElement element,
@NotNull Class<? extends PsiElement> refClass) {
PsiElement prevParent = element.getParent();
@@ -22,7 +23,7 @@ public class Prev {
if (element.getTextRange().getEndOffset() < lineInfo.startOffset) {
return null;
}
PsiElement parent = refClassParent(element, refClass);
@Nullable PsiElement parent = refClassParent(element, refClass);
if (parent != null) {
// skip b in a.b.c
if (prevParent.getTextRange().getEndOffset() < lineInfo.endOffset
@@ -42,6 +43,7 @@ public class Prev {
"{-~" +
"]++");
@Nullable
private static PsiElement refClassParent(@NotNull PsiElement element,
@NotNull Class<? extends PsiElement> refClass) {
String text = element.getText();
@@ -67,7 +69,7 @@ public class Prev {
public static @Nullable <T extends SettingsInfo> PsiElement prevCompactElement(
@SuppressWarnings("unused") @NotNull T lineInfo, @NotNull PsiElement resolve, @NotNull Document document) {
PsiElement element = PsiTreeUtil.prevVisibleLeaf(resolve);
@Nullable PsiElement element = PsiTreeUtil.prevVisibleLeaf(resolve);
if (element == null) {
return null;
}
@@ -79,7 +81,7 @@ public class Prev {
} catch (Exception e) {
return null;
}
String replace = spaceText.replace("\n", "");
@NotNull String replace = spaceText.replace("\n", "");
if (spaceText.length() - replace.length() > 1) {
return null;
}

View File

@@ -13,7 +13,7 @@ public class PsiElementTo {
private PsiElementTo() {}
public static @Nullable FileViewProvider viewProvider(PsiElement resolve) {
public static @Nullable FileViewProvider viewProvider(@NotNull PsiElement resolve) {
PsiFile psiFile = resolve.getContainingFile();
if (psiFile == null) {
return null;
@@ -26,8 +26,8 @@ public class PsiElementTo {
}
public static @NotNull Language language(@NotNull PsiElement element) {
Language lang = element.getLanguage();
Language base = lang.getBaseLanguage();
@NotNull Language lang = element.getLanguage();
@Nullable Language base = lang.getBaseLanguage();
if (base != null) {
return base;
}

View File

@@ -19,7 +19,7 @@ public class ResolveDoc {
public static <T extends SettingsInfo> String fromLineEnd(@SuppressWarnings("unused") @NotNull T lineInfo,
@NotNull PsiElement resolve,
@NotNull FileViewProvider resolveViewProvider) {
Document document = resolveViewProvider.getDocument();
@Nullable Document document = resolveViewProvider.getDocument();
if (document == null) {
return null;
}
@@ -33,11 +33,11 @@ public class ResolveDoc {
return null;
}
// end over will return last
PsiElement psiElement = resolveViewProvider.findElementAt(resolveEndOffset);
@Nullable PsiElement psiElement = resolveViewProvider.findElementAt(resolveEndOffset);
if (psiElement == null) {
return null;
}
PsiElement docElement = PsiTreeUtil.prevVisibleLeaf(psiElement);
@Nullable PsiElement docElement = PsiTreeUtil.prevVisibleLeaf(psiElement);
if (!(docElement instanceof PsiComment)) {
return null;
}
@@ -51,14 +51,14 @@ public class ResolveDoc {
@Nullable
public static <T extends SettingsInfo> String fromLineUp(@NotNull T lineInfo,
PsiElement resolve,
@NotNull PsiElement resolve,
@NotNull FileViewProvider resolveViewProvider,
@NotNull List<String> keywords) {
Document document = resolveViewProvider.getDocument();
@Nullable Document document = resolveViewProvider.getDocument();
if (document == null) {
return null;
}
PsiElement psiElement = Prev.prevCompactElement(lineInfo, resolve, document);
@Nullable PsiElement psiElement = Prev.prevCompactElement(lineInfo, resolve, document);
if (!keywords.isEmpty()) {
while (psiElement != null) {
String text = psiElement.getText();
@@ -69,7 +69,7 @@ public class ResolveDoc {
}
}
}
StringBuilder sb = new StringBuilder();
@NotNull StringBuilder sb = new StringBuilder();
while (psiElement instanceof PsiComment) {
String text = psiElement.getText();
if (text != null) {