larshp/abapOpenChecks

CHECK_63: Error message not displayed correctly

ConjuringCoffee opened this issue ยท 18 comments

I activated CHECK_63 (ABAP Doc - Check parameter consistency) but the errors are not displayed properly. The message of each finding is "Unknown error code" and the navigation always leads to the start of the class, not the abap Doc parameter.

Here's an example (the faulty parameter is param_3):

CLASS ycl_aoc_test DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.
    "! @parameter param_1 |
    "! @parameter param_3 |
    METHODS example
      IMPORTING
        param_1 TYPE i
        param_2 TYPE i.

  PROTECTED SECTION.

  PRIVATE SECTION.
ENDCLASS.


CLASS ycl_aoc_test IMPLEMENTATION.
  METHOD example.
    RETURN.
  ENDMETHOD.
ENDCLASS.

image

Any idea why this happens? Thanks!

larshp commented

guess something changed in the abapdoc api, try setting a breakpoint

The check successfully reaches method INFORM with the following text in p_param_1:

inconsistency ABAP Doc comment - parameter interface of element EXAMPLE

So it doesn't seem like this is a problem with the abap Doc API to me. Any other ideas?

I suspect the problem comes from the defined error code-number "003" in the constructor and the passed code-number in "inform" (001).
Can you try to make "003" into "001" in the constructor at "insert_scimessage"?
image

This is the result now:

image

I think we're on the right path, but we're not quite there yet. Any chance we can exchange the very generic message for a more specific message? The more specific message can only be seen in SAP GUI:

image

Ok, step by step a little further. :-)
Unfortunately, I can't test it. But what can be seen in the Detail view?

The detail view looks good:

image

Compared to before:

image

A PR is welcome. :-)

I didn't submit a pull request because I'm not happy yet with how the text turns out. Compare it to check 001 for example:

image

How can this text be changed? I tried to change iv_text like this, but it had no effect:

    insert_scimessage(
        iv_code = '001'
        iv_text = 'ABAP Doc parameter name is inconsistent' ).

What is your goal? To change the highlighted text in the screenshot?
image
This text is from the class description; the check-title.

I want to change the other text ๐Ÿ˜Š

image

I had now also the possibility to test this with eclipse. For me the result looks like this (with the latest PR):
image

That's weird! I'll check the installation and report back. (Could take a while, I'm having some authorization problems right now...)

My authorization problems are fixed and I'm running the latest version now. The message still isn't displayed correctly.

Can anyone please re-open this issue?

I also tried it using SAP GUI, same result:
image

Is it ok to change the text of the check message from "&1" to "ABAP Doc: &1"?
This would then look like this:
abap doc change

For the findings list, the text of the check message is used; however, the variables are replaced by "..." and only added later, e.g. in the details.

Are we still talking about the same problem? I'd be actually okay with the way it already works in your previous screenshots, it just doesn't seem to work on my system. ๐Ÿ˜…

  • On your system: inconsistency ABAP Doc comment - parameter interface of [...] (cut off in the screenshot)
    image
  • On my system: Check: ZCL_AOC_CHECK_63, Rule: 001
    image

Right, so I have a bit more experience with ATC checks now and I think I know what's going on now.

  • The ATC check message is only defined with a message variable: &1
  • The actual text (inconsistency ABAP Doc comment - parameter interface [...]) is put into the message variable when calling method INFORM
  • For some reason, the behavior of MiLiCLN's system is different to mine: On his system, ADT already shows the complete message. On my system, it shows Check: ZCL_AOC_CHECK_63, Rule: 001
  • I conclude that my system replaces the complete message text with Check: ZCL_AOC_CHECK_63, Rule: 001 if it only consists of a single message variable. If I include any other text in the message, then it works as expected.

I'll provide a pull request to fix this.

image

I've changed the message from &1 to ABAP Doc: &1 and it works in the SAP GUI:

image

However, it doesn't work in ADT:

image

If I change the error code from '001' to '002' (both in the constructor and in the run method), then it works in ADT too:

image

Restarting my own PC didn't help, and it also behaves the same for colleagues. Maybe there is some kind of additional caching for the ATC message check? I'll keep an eye on it.

Maybe there is some kind of additional caching for the ATC message check? I'll keep an eye on it.

I suspect that this was the case. The error message is correctly displayed for '001' now.