Skip to content

Commit 44d426b

Browse files
committed
add code for diagnostic messages
1 parent 6d4d2cc commit 44d426b

File tree

1 file changed

+19
-17
lines changed
  • robotcode/language_server/robotframework/diagnostics

1 file changed

+19
-17
lines changed

robotcode/language_server/robotframework/diagnostics/analyzer.py

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ async def visit(self, node: ast.AST) -> None:
146146
message=f"Variable '{var.name}' not found.",
147147
severity=severity,
148148
source=DIAGNOSTICS_SOURCE_NAME,
149+
code="VariableNotFound",
149150
)
150151
else:
151152
if self.namespace.document is not None:
@@ -173,6 +174,7 @@ async def visit(self, node: ast.AST) -> None:
173174
message=f"Variable '{var.name}' not found.",
174175
severity=DiagnosticSeverity.ERROR,
175176
source=DIAGNOSTICS_SOURCE_NAME,
177+
code="VariableNotFound",
176178
)
177179
else:
178180
if self.namespace.document is not None:
@@ -221,7 +223,17 @@ async def append_diagnostics(
221223
return
222224

223225
self._diagnostics.append(
224-
Diagnostic(range, message, severity, code, code_description, source, tags, related_information, data)
226+
Diagnostic(
227+
range,
228+
message,
229+
severity,
230+
code,
231+
code_description,
232+
source or DIAGNOSTICS_SOURCE_NAME,
233+
tags,
234+
related_information,
235+
data,
236+
)
225237
)
226238

227239
async def _analyze_keyword_call(
@@ -271,7 +283,6 @@ async def _analyze_keyword_call(
271283
range=kw_range,
272284
message=e.message,
273285
severity=e.severity,
274-
source=DIAGNOSTICS_SOURCE_NAME,
275286
code=e.code,
276287
)
277288

@@ -284,7 +295,6 @@ async def _analyze_keyword_call(
284295
range=kw_range,
285296
message="Keyword definition contains errors.",
286297
severity=DiagnosticSeverity.ERROR,
287-
source=DIAGNOSTICS_SOURCE_NAME,
288298
related_information=[
289299
DiagnosticRelatedInformation(
290300
location=Location(
@@ -328,22 +338,22 @@ async def _analyze_keyword_call(
328338
message=f"Keyword '{result.name}' is deprecated"
329339
f"{f': {result.deprecated_message}' if result.deprecated_message else ''}.",
330340
severity=DiagnosticSeverity.HINT,
331-
source=DIAGNOSTICS_SOURCE_NAME,
332341
tags=[DiagnosticTag.Deprecated],
342+
code="DeprecatedKeyword",
333343
)
334344
if result.is_error_handler:
335345
await self.append_diagnostics(
336346
range=kw_range,
337347
message=f"Keyword definition contains errors: {result.error_handler_message}",
338348
severity=DiagnosticSeverity.ERROR,
339-
source=DIAGNOSTICS_SOURCE_NAME,
349+
code="KeywordContainsErrors",
340350
)
341351
if result.is_reserved():
342352
await self.append_diagnostics(
343353
range=kw_range,
344354
message=f"'{result.name}' is a reserved keyword.",
345355
severity=DiagnosticSeverity.ERROR,
346-
source=DIAGNOSTICS_SOURCE_NAME,
356+
code="ReservedKeyword",
347357
)
348358

349359
if not isinstance(node, (Template, TestTemplate)):
@@ -365,7 +375,6 @@ async def _analyze_keyword_call(
365375
),
366376
message=str(e),
367377
severity=DiagnosticSeverity.ERROR,
368-
source=DIAGNOSTICS_SOURCE_NAME,
369378
code=type(e).__qualname__,
370379
)
371380

@@ -376,7 +385,6 @@ async def _analyze_keyword_call(
376385
range=range_from_node_or_token(node, keyword_token),
377386
message=str(e),
378387
severity=DiagnosticSeverity.ERROR,
379-
source=DIAGNOSTICS_SOURCE_NAME,
380388
code=type(e).__qualname__,
381389
)
382390

@@ -409,7 +417,7 @@ async def _analyze_keyword_call(
409417
range=range_from_token(var_token),
410418
message=f"Variable '{var.name}' not found.",
411419
severity=DiagnosticSeverity.ERROR,
412-
source=DIAGNOSTICS_SOURCE_NAME,
420+
code="VariableNotFound",
413421
)
414422
else:
415423
if self.namespace.document is not None:
@@ -472,7 +480,7 @@ async def _analyse_run_keyword(
472480
range=range_from_token(t),
473481
message=f"Incorrect use of {t.value}.",
474482
severity=DiagnosticSeverity.ERROR,
475-
source=DIAGNOSTICS_SOURCE_NAME,
483+
code="IncorrectUse",
476484
)
477485
continue
478486

@@ -630,7 +638,6 @@ async def visit_KeywordCall(self, node: ast.AST) -> None: # noqa: N802
630638
range=range_from_node_or_token(value, value.get_token(RobotToken.ASSIGN)),
631639
message="Keyword name cannot be empty.",
632640
severity=DiagnosticSeverity.ERROR,
633-
source=DIAGNOSTICS_SOURCE_NAME,
634641
code="KeywordError",
635642
)
636643
else:
@@ -643,8 +650,8 @@ async def visit_KeywordCall(self, node: ast.AST) -> None: # noqa: N802
643650
range=range_from_node_or_token(value, value.get_token(RobotToken.ASSIGN)),
644651
message="Code is unreachable.",
645652
severity=DiagnosticSeverity.HINT,
646-
source=DIAGNOSTICS_SOURCE_NAME,
647653
tags=[DiagnosticTag.Unnecessary],
654+
code="CodeUnreachable",
648655
)
649656

650657
await self.generic_visit(node)
@@ -662,7 +669,6 @@ async def visit_TestCase(self, node: ast.AST) -> None: # noqa: N802
662669
range=range_from_node_or_token(testcase, name_token),
663670
message="Test case name cannot be empty.",
664671
severity=DiagnosticSeverity.ERROR,
665-
source=DIAGNOSTICS_SOURCE_NAME,
666672
code="KeywordError",
667673
)
668674

@@ -694,7 +700,6 @@ async def visit_Keyword(self, node: ast.AST) -> None: # noqa: N802
694700
range=range_from_node_or_token(keyword, name_token),
695701
message="Keyword cannot have both normal and embedded arguments.",
696702
severity=DiagnosticSeverity.ERROR,
697-
source=DIAGNOSTICS_SOURCE_NAME,
698703
code="KeywordError",
699704
)
700705
else:
@@ -703,7 +708,6 @@ async def visit_Keyword(self, node: ast.AST) -> None: # noqa: N802
703708
range=range_from_node_or_token(keyword, name_token),
704709
message="Keyword name cannot be empty.",
705710
severity=DiagnosticSeverity.ERROR,
706-
source=DIAGNOSTICS_SOURCE_NAME,
707711
code="KeywordError",
708712
)
709713

@@ -756,7 +760,6 @@ async def visit_TemplateArguments(self, node: ast.AST) -> None: # noqa: N802
756760
range=range_from_node(arguments, skip_non_data=True),
757761
message=str(e),
758762
severity=DiagnosticSeverity.ERROR,
759-
source=DIAGNOSTICS_SOURCE_NAME,
760763
code=type(e).__qualname__,
761764
)
762765

@@ -765,7 +768,6 @@ async def visit_TemplateArguments(self, node: ast.AST) -> None: # noqa: N802
765768
range=range_from_node(arguments, skip_non_data=True),
766769
message=d.message,
767770
severity=d.severity,
768-
source=DIAGNOSTICS_SOURCE_NAME,
769771
code=d.code,
770772
)
771773

0 commit comments

Comments
 (0)