@@ -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