Skip to content

Commit d9dfbf3

Browse files
committed
Оптимизировано (и местами исправлено) формирование ссылки на объекты MD
1 parent d9296b9 commit d9dfbf3

24 files changed

+121
-174
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ dependencies {
8686
exclude("org.antlr", "antlr-runtime")
8787
}
8888
api("io.github.1c-syntax", "utils", "0.6.2")
89-
api("io.github.1c-syntax", "mdclasses", "0.15.0")
89+
api("io.github.1c-syntax", "mdclasses", "develop-SNAPSHOT")
9090
api("io.github.1c-syntax", "bsl-common-library", "0.8.0")
9191
api("io.github.1c-syntax", "supportconf", "0.14.2")
9292
api("io.github.1c-syntax", "bsl-parser-core", "0.3.0")

src/main/java/com/github/_1c_syntax/bsl/languageserver/cli/AnalyzeCommand.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
import com.github._1c_syntax.bsl.languageserver.reporters.ReportersAggregator;
2727
import com.github._1c_syntax.bsl.languageserver.reporters.data.AnalysisInfo;
2828
import com.github._1c_syntax.bsl.languageserver.reporters.data.FileInfo;
29-
import com.github._1c_syntax.bsl.mdo.MD;
30-
import com.github._1c_syntax.bsl.types.MdoReference;
3129
import com.github._1c_syntax.utils.Absolute;
3230
import lombok.RequiredArgsConstructor;
3331
import lombok.SneakyThrows;
@@ -205,10 +203,7 @@ private FileInfo getFileInfoFromFile(Path srcDir, File file) {
205203
var filePath = srcDir.relativize(Absolute.path(file));
206204
var diagnostics = documentContext.getDiagnostics();
207205
var metrics = documentContext.getMetrics();
208-
var mdoRef = documentContext.getMdObject()
209-
.map(MD::getMdoReference)
210-
.map(MdoReference::getMdoRef)
211-
.orElse("");
206+
var mdoRef = documentContext.getMdoRef();
212207

213208
var fileInfo = new FileInfo(filePath, mdoRef, diagnostics, metrics);
214209

src/main/java/com/github/_1c_syntax/bsl/languageserver/context/DocumentContext.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.github._1c_syntax.bsl.languageserver.context.computer.SymbolTreeComputer;
3333
import com.github._1c_syntax.bsl.languageserver.context.symbol.MethodSymbol;
3434
import com.github._1c_syntax.bsl.languageserver.context.symbol.SymbolTree;
35+
import com.github._1c_syntax.bsl.languageserver.utils.MdoRefBuilder;
3536
import com.github._1c_syntax.bsl.languageserver.utils.Trees;
3637
import com.github._1c_syntax.bsl.mdo.MD;
3738
import com.github._1c_syntax.bsl.mdo.support.ScriptVariant;
@@ -256,6 +257,16 @@ public Optional<MD> getMdObject() {
256257
return getServerContext().getConfiguration().findChild(getUri());
257258
}
258259

260+
/**
261+
* Возвращает строковое представление ссылки связанного с объектом объекта метаданных 1С либо строку URI для
262+
* остальных случаев
263+
*
264+
* @return Строковое представление ссылки
265+
*/
266+
public String getMdoRef() {
267+
return MdoRefBuilder.getMdoRef(this);
268+
}
269+
259270
public List<SDBLTokenizer> getQueries() {
260271
return queries.getOrCompute();
261272
}

src/main/java/com/github/_1c_syntax/bsl/languageserver/context/ServerContext.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
import com.github._1c_syntax.bsl.languageserver.WorkDoneProgressHelper;
2525
import com.github._1c_syntax.bsl.languageserver.configuration.LanguageServerConfiguration;
26-
import com.github._1c_syntax.bsl.languageserver.utils.MdoRefBuilder;
2726
import com.github._1c_syntax.bsl.languageserver.utils.NamedForkJoinWorkerThreadFactory;
2827
import com.github._1c_syntax.bsl.languageserver.utils.Resources;
2928
import com.github._1c_syntax.bsl.mdclasses.CF;
@@ -307,7 +306,7 @@ private CF computeConfigurationMetadata() {
307306
}
308307

309308
private void addMdoRefByUri(URI uri, DocumentContext documentContext) {
310-
String mdoRef = MdoRefBuilder.getMdoRef(documentContext);
309+
var mdoRef = documentContext.getMdoRef();
311310

312311
mdoRefs.put(uri, mdoRef);
313312
documentsByMDORef.computeIfAbsent(

src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/ModuleSymbolComputer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
import com.github._1c_syntax.bsl.languageserver.context.DocumentContext;
2525
import com.github._1c_syntax.bsl.languageserver.context.symbol.ModuleSymbol;
26-
import com.github._1c_syntax.bsl.languageserver.utils.MdoRefBuilder;
2726
import com.github._1c_syntax.bsl.languageserver.utils.Ranges;
2827
import com.github._1c_syntax.bsl.parser.BSLLexer;
2928
import com.github._1c_syntax.bsl.types.ModuleType;
@@ -69,7 +68,7 @@ public ModuleSymbol compute() {
6968
}
7069

7170
private static String getName(DocumentContext documentContext) {
72-
String name = MdoRefBuilder.getMdoRef(documentContext);
71+
var name = documentContext.getMdoRef();
7372
var moduleType = documentContext.getModuleType();
7473
if (MODULE_TYPES_TO_APPEND_NAME.contains(moduleType)) {
7574
name += "." + moduleType.name();

src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/AbstractMetadataDiagnostic.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ protected void addDiagnostic(String message) {
103103
diagnosticStorage.addDiagnostic(diagnosticRange, message);
104104
}
105105

106+
protected String getMdoRefLocal(MD mdo) {
107+
return documentContext.getServerContext().getConfiguration().getMdoRefLocal(mdo);
108+
}
109+
106110
protected abstract void checkMetadata(MD mdo);
107111

108112
private void checkMetadataWithModules() {

src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/DenyIncompleteValuesDiagnostic.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticSeverity;
2727
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticTag;
2828
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType;
29-
import com.github._1c_syntax.bsl.languageserver.utils.MdoRefBuilder;
3029
import com.github._1c_syntax.bsl.mdo.MD;
3130
import com.github._1c_syntax.bsl.mdo.Register;
3231
import com.github._1c_syntax.bsl.mdo.children.Dimension;
@@ -59,11 +58,11 @@ public DenyIncompleteValuesDiagnostic() {
5958
@Override
6059
protected void checkMetadata(MD mdo) {
6160
if (mdo instanceof Register register) {
61+
var mdoRefLocal = getMdoRefLocal(mdo);
6262
register.getDimensions().stream()
6363
.filter(dimension -> !dimension.isDenyIncompleteValues())
6464
.forEach((Dimension dimension) -> {
65-
var ownerMDOName = MdoRefBuilder.getLocaleOwnerMdoName(documentContext, mdo);
66-
addDiagnostic(info.getMessage(dimension.getName(), ownerMDOName));
65+
addDiagnostic(info.getMessage(dimension.getName(), mdoRefLocal));
6766
});
6867
}
6968
}

src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/ForbiddenMetadataNameDiagnostic.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,14 @@
2121
*/
2222
package com.github._1c_syntax.bsl.languageserver.diagnostics;
2323

24-
import com.github._1c_syntax.bsl.languageserver.configuration.Language;
2524
import com.github._1c_syntax.bsl.languageserver.configuration.LanguageServerConfiguration;
2625
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticMetadata;
2726
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticScope;
2827
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticSeverity;
2928
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticTag;
3029
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType;
3130
import com.github._1c_syntax.bsl.mdo.AttributeOwner;
32-
import com.github._1c_syntax.bsl.mdo.ChildrenOwner;
3331
import com.github._1c_syntax.bsl.mdo.MD;
34-
import com.github._1c_syntax.bsl.types.MdoReference;
3532
import com.github._1c_syntax.bsl.types.ModuleType;
3633
import com.github._1c_syntax.utils.CaseInsensitivePattern;
3734
import lombok.RequiredArgsConstructor;
@@ -134,23 +131,18 @@ public class ForbiddenMetadataNameDiagnostic extends AbstractMetadataDiagnostic
134131
protected void checkMetadata(MD mdo) {
135132

136133
// проверка имени метаданного
137-
checkName(mdo.getName(), mdo.getMdoReference());
134+
checkName(mdo.getName(), mdo);
138135

139136
// проверка имен реквизитов и табличных частей
140137
if (mdo instanceof AttributeOwner childrenOwner) {
141138
childrenOwner.getPlainStorageFields()
142-
.forEach(child -> checkName(child.getName(), child.getMdoReference()));
139+
.forEach(child -> checkName(child.getName(), child));
143140
}
144141
}
145142

146-
private void checkName(String name, MdoReference mdoReference) {
143+
private void checkName(String name, MD md) {
147144
if (FORBIDDEN_NAMES_PATTERN.matcher(name).matches()) {
148-
String mdoRef;
149-
if (serverConfiguration.getLanguage() == Language.RU) {
150-
mdoRef = mdoReference.getMdoRefRu();
151-
} else {
152-
mdoRef = mdoReference.getMdoRef();
153-
}
145+
var mdoRef = getMdoRefLocal(md);
154146
addDiagnostic(info.getMessage(name, mdoRef));
155147
}
156148
}

src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MetadataObjectNameLengthDiagnostic.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
*/
2222
package com.github._1c_syntax.bsl.languageserver.diagnostics;
2323

24-
import com.github._1c_syntax.bsl.languageserver.configuration.Language;
2524
import com.github._1c_syntax.bsl.languageserver.configuration.LanguageServerConfiguration;
2625
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticMetadata;
2726
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticParameter;
@@ -65,7 +64,7 @@ public class MetadataObjectNameLengthDiagnostic extends AbstractMetadataDiagnost
6564
@Override
6665
protected void checkMetadata(MD mdo) {
6766
if (mdo.getName().length() > maxMetadataObjectNameLength) {
68-
addAttributeDiagnostic(mdo);
67+
addDiagnostic(info.getMessage(getMdoRefLocal(mdo), maxMetadataObjectNameLength));
6968
}
7069
}
7170

@@ -81,14 +80,4 @@ protected void check() {
8180
super.check();
8281
}
8382
}
84-
85-
private void addAttributeDiagnostic(MD attribute) {
86-
String mdoRef;
87-
if (serverConfiguration.getLanguage() == Language.RU) {
88-
mdoRef = attribute.getMdoReference().getMdoRefRu();
89-
} else {
90-
mdoRef = attribute.getMdoReference().getMdoRef();
91-
}
92-
addDiagnostic(info.getMessage(mdoRef, maxMetadataObjectNameLength));
93-
}
9483
}

src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/MissingCommonModuleMethodDiagnostic.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ private static String getMethodNameByLocation(BSLParserRuleContext node, Range r
6565

6666
@Override
6767
protected void check() {
68-
if (documentContext.getServerContext().getConfiguration().getConfigurationSource() == ConfigurationSource.EMPTY){
68+
if (documentContext.getServerContext().getConfiguration().getConfigurationSource() == ConfigurationSource.EMPTY) {
6969
return;
7070
}
7171
locationRepository.getSymbolOccurrencesByLocationUri(documentContext.getUri())
@@ -88,7 +88,7 @@ private Optional<CallData> getReferenceToMethodCall(SymbolOccurrence symbolOccur
8888
// т.к. через refIndex.getReferences нельзя получить приватные методы, приходится обходить символы модуля
8989
final var methodSymbol = document.get()
9090
.getSymbolTree().getMethodSymbol(symbol.getSymbolName());
91-
if (methodSymbol.isEmpty()){
91+
if (methodSymbol.isEmpty()) {
9292
final var location = symbolOccurrence.getLocation();
9393
// Нельзя использовать symbol.getSymbolName(), т.к. имя в нижнем регистре
9494
return Optional.of(
@@ -97,7 +97,7 @@ private Optional<CallData> getReferenceToMethodCall(SymbolOccurrence symbolOccur
9797
location.getRange(), false, false));
9898
}
9999
// вызовы приватных методов внутри самого модуля пропускаем
100-
if (document.get().getUri().equals(documentContext.getUri())){
100+
if (document.get().getUri().equals(documentContext.getUri())) {
101101
return Optional.empty();
102102
}
103103
return methodSymbol
@@ -109,7 +109,7 @@ private Optional<CallData> getReferenceToMethodCall(SymbolOccurrence symbolOccur
109109

110110
private void fireIssue(CallData callData) {
111111
final String message;
112-
if (!callData.exists){
112+
if (!callData.exists) {
113113
message = info.getMessage(callData.methodName, callData.moduleName);
114114
} else {
115115
message = info.getResourceString(PRIVATE_METHOD_MESSAGE, callData.methodName, callData.moduleName);

0 commit comments

Comments
 (0)