Skip to content

Commit 2103458

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

22 files changed

+114
-177
lines changed

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;
@@ -203,10 +201,7 @@ private FileInfo getFileInfoFromFile(Path srcDir, File file) {
203201
var filePath = srcDir.relativize(Absolute.path(file));
204202
var diagnostics = documentContext.getDiagnostics();
205203
var metrics = documentContext.getMetrics();
206-
var mdoRef = documentContext.getMdObject()
207-
.map(MD::getMdoReference)
208-
.map(MdoReference::getMdoRef)
209-
.orElse("");
204+
var mdoRef = documentContext.getMdoRef();
210205

211206
var fileInfo = new FileInfo(filePath, mdoRef, diagnostics, metrics);
212207

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.parser.BSLLexer;
@@ -261,6 +262,16 @@ public Optional<MD> getMdObject() {
261262
return getServerContext().getConfiguration().findChild(getUri());
262263
}
263264

265+
/**
266+
* Возвращает строковое представление ссылки связанного с объектом объекта метаданных 1С либо строку URI для
267+
* остальных случаев
268+
*
269+
* @return Строковое представление ссылки
270+
*/
271+
public String getMdoRef() {
272+
return MdoRefBuilder.getMdoRef(this);
273+
}
274+
264275
public List<SDBLTokenizer> getQueries() {
265276
return queries.getOrCompute();
266277
}

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;
@@ -320,7 +319,7 @@ private CF computeConfigurationMetadata() {
320319
}
321320

322321
private void addMdoRefByUri(URI uri, DocumentContext documentContext) {
323-
String mdoRef = MdoRefBuilder.getMdoRef(documentContext);
322+
var mdoRef = documentContext.getMdoRef();
324323

325324
mdoRefs.put(uri, mdoRef);
326325
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
@@ -121,6 +121,10 @@ protected void addDiagnostic(String message) {
121121
diagnosticStorage.addDiagnostic(diagnosticRange, message);
122122
}
123123

124+
protected String getMdoRefLocal(MD mdo) {
125+
return documentContext.getServerContext().getConfiguration().getMdoRefLocal(mdo);
126+
}
127+
124128
/**
125129
* Проверить объект метаданных.
126130
*

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 & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType;
3030
import com.github._1c_syntax.bsl.mdo.AttributeOwner;
3131
import com.github._1c_syntax.bsl.mdo.MD;
32-
import com.github._1c_syntax.bsl.types.MdoReference;
3332
import com.github._1c_syntax.bsl.types.ModuleType;
3433
import com.github._1c_syntax.utils.CaseInsensitivePattern;
3534
import lombok.RequiredArgsConstructor;
@@ -132,20 +131,18 @@ public class ForbiddenMetadataNameDiagnostic extends AbstractMetadataDiagnostic
132131
protected void checkMetadata(MD mdo) {
133132

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

137136
// проверка имен реквизитов и табличных частей
138137
if (mdo instanceof AttributeOwner childrenOwner) {
139138
childrenOwner.getPlainStorageFields()
140-
.forEach(child -> checkName(child.getName(), child.getMdoReference()));
139+
.forEach(child -> checkName(child.getName(), child));
141140
}
142141
}
143142

144-
private void checkName(String name, MdoReference mdoReference) {
143+
private void checkName(String name, MD md) {
145144
if (FORBIDDEN_NAMES_PATTERN.matcher(name).matches()) {
146-
var mdoRef = mdoReference.getMdoRef(
147-
documentContext.getServerContext().getConfiguration().getScriptVariant());
148-
addDiagnostic(info.getMessage(name, mdoRef));
145+
addDiagnostic(info.getMessage(name, getMdoRefLocal(md)));
149146
}
150147
}
151148
}

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public class MetadataObjectNameLengthDiagnostic extends AbstractMetadataDiagnost
6060
@Override
6161
protected void checkMetadata(MD mdo) {
6262
if (mdo.getName().length() > maxMetadataObjectNameLength) {
63-
addAttributeDiagnostic(mdo);
63+
addDiagnostic(info.getMessage(getMdoRefLocal(mdo), maxMetadataObjectNameLength));
6464
}
6565
}
6666

@@ -76,10 +76,4 @@ protected void check() {
7676
super.check();
7777
}
7878
}
79-
80-
private void addAttributeDiagnostic(MD attribute) {
81-
var mdoRef = attribute.getMdoReference().getMdoRef(
82-
documentContext.getServerContext().getConfiguration().getScriptVariant());
83-
addDiagnostic(info.getMessage(mdoRef, maxMetadataObjectNameLength));
84-
}
8579
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ protected void check() {
109109

110110
private void checkMethod(EventSubscription eventSubs, String methodName, CommonModule commonModule) {
111111
documentContext.getServerContext()
112-
.getDocument(commonModule.getMdoReference().getMdoRef(), ModuleType.CommonModule)
112+
.getDocument(commonModule.getMdoRef(), ModuleType.CommonModule)
113113
.ifPresent((DocumentContext commonModuleContext) -> {
114114
var method = commonModuleContext.getSymbolTree().getMethods().stream()
115115
.filter(methodSymbol -> methodSymbol.getName().equalsIgnoreCase(methodName))

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,7 @@ private List<ModuleSymbol> getPrivilegedModuleSymbols() {
8585
}
8686

8787
private Optional<ModuleSymbol> getPrivilegedModuleSymbol(CommonModule mdCommonModule) {
88-
return documentContext.getServerContext().getDocument(
89-
mdCommonModule.getMdoReference().getMdoRef(), ModuleType.CommonModule)
88+
return documentContext.getServerContext().getDocument(mdCommonModule.getMdoRef(), ModuleType.CommonModule)
9089
.map(documentContext1 -> documentContext1.getSymbolTree().getModule());
9190
}
9291

0 commit comments

Comments
 (0)