diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/InternetAccessDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/InternetAccessDiagnostic.java index 20e28719ff2..ed34637e69e 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/InternetAccessDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/InternetAccessDiagnostic.java @@ -25,6 +25,7 @@ import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticSeverity; import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticTag; import com.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticType; +import com.github._1c_syntax.bsl.languageserver.utils.bsl.Constructors; import com.github._1c_syntax.bsl.parser.BSLParser; import com.github._1c_syntax.utils.CaseInsensitivePattern; import org.antlr.v4.runtime.tree.ParseTree; @@ -32,12 +33,13 @@ import java.util.regex.Pattern; @DiagnosticMetadata( - type = DiagnosticType.CODE_SMELL, + type = DiagnosticType.VULNERABILITY, severity = DiagnosticSeverity.MINOR, minutesToFix = 1, tags = { DiagnosticTag.SUSPICIOUS - } + }, + activatedByDefault = false ) public class InternetAccessDiagnostic extends AbstractVisitorDiagnostic { @@ -48,13 +50,12 @@ public class InternetAccessDiagnostic extends AbstractVisitorDiagnostic { @Override public ParseTree visitNewExpression(BSLParser.NewExpressionContext ctx) { - var typeNameContext = ctx.typeName(); - if (typeNameContext != null) { - var matcherTypeName = PATTERN_NEW_EXPRESSION.matcher(typeNameContext.getText()); + Constructors.typeName(ctx).ifPresent((String typeName) -> { + var matcherTypeName = PATTERN_NEW_EXPRESSION.matcher(typeName); if (matcherTypeName.matches()) { diagnosticStorage.addDiagnostic(ctx); } - } + }); return super.visitNewExpression(ctx); } } diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/InternetAccessDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/InternetAccessDiagnosticTest.java index 8ee4571ff67..096df28e5d6 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/InternetAccessDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/InternetAccessDiagnosticTest.java @@ -55,7 +55,8 @@ void test() { .hasRange(25, 21, 51) .hasRange(29, 14, 43) .hasRange(35, 14, 32) - .hasRange(38, 10, 21) - .hasSize(17); + .hasRange(39, 14, 35) + .hasRange(42, 10, 21) + .hasSize(18); } } diff --git a/src/test/resources/diagnostics/InternetAccessDiagnostic.bsl b/src/test/resources/diagnostics/InternetAccessDiagnostic.bsl index 8f0e4a83a8c..af23599447d 100644 --- a/src/test/resources/diagnostics/InternetAccessDiagnostic.bsl +++ b/src/test/resources/diagnostics/InternetAccessDiagnostic.bsl @@ -36,4 +36,8 @@ Профиль = Новый InternetMail; // ошибка КонецФункции +Функция InternetMail_НовыйТип() + Профиль = Новый("InternetMail"); // ошибка +КонецФункции + Профиль = Новый Почта; // ошибка \ No newline at end of file