Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-56484

timestamper 1.9 breaks warnings-ng's ability to find source files

    Details

    • Similar Issues:
    • Released As:
      5.0.0 (analysis-model and warnings-ng)

      Description

      In timestamper 1.9, the log format was changed.  When I enable timestamper on a pipeline job, then scan it with warnings-ng, it detects errors but incorrectly parses the filename — it considers the timestamp to be part of the filename.

      To reproduce the issue, install both plugins and run this pipeline job:

      node {
          timestamps {
              sh """
                  echo '#error This is an error.' > test.c
                  clang test.c || true
              """
              recordIssues tools: [clang(id: 'clang', name: 'clang')]
          }
      }
      

      and the console log says:

      00:00:01.047  test.c:1:2: error: This is an error.
      …
      00:00:06.276  [clang] [ERROR] Can't resolve absolute paths for some files:
      00:00:06.276  [clang] [ERROR] - [2019-03-08T15:46:53.268Z] test.c
      00:00:06.276  [clang] [ERROR] Can't create fingerprints for some files:
      00:00:06.276  [clang] [ERROR] - '[2019-03-08T15:46:53.268Z] test.c', IO exception has been thrown: java.nio.file.NoSuchFileException: [2019-03-08T15:46:53.268Z] test.c
      

        Attachments

          Issue Links

            Activity

            Hide
            drulli Ulli Hafner added a comment -
            Show
            drulli Ulli Hafner added a comment - See discussion in https://github.com/jenkinsci/analysis-model/pull/118 .
            Hide
            drulli Ulli Hafner added a comment -

            This is not related to the timestamper plugin in general. It also happens if e.g. warnings are reported using a colored maven output.

            Show
            drulli Ulli Hafner added a comment - This is not related to the timestamper plugin in general. It also happens if e.g. warnings are reported using a colored maven output.
            Hide
            jglick Jesse Glick added a comment - - edited

            There is apparently a TimestamperAPI.read method which no longer works (and has no test coverage that I know of), though I guess you are looking for something like the opposite which AFAIK does not exist.

            Show
            jglick Jesse Glick added a comment - - edited There is apparently a TimestamperAPI.read method which no longer works (and has no test coverage that I know of), though I guess you are looking for something like the opposite which AFAIK does not exist.
            Hide
            jglick Jesse Glick added a comment -

            Possibly this plugin could pick out filenames from other surrounding text using various algorithms. You could use a block-scoped step where you would be able to intercept process output before other decorations are applied by Jenkins plugins like Timestamper, though as you point out this will do nothing to help cases where decorations are applied by some external tool on the agent such as Maven execution wrappers.

            Show
            jglick Jesse Glick added a comment - Possibly this plugin could pick out filenames from other surrounding text using various algorithms. You could use a block-scoped step where you would be able to intercept process output before other decorations are applied by Jenkins plugins like Timestamper, though as you point out this will do nothing to help cases where decorations are applied by some external tool on the agent such as Maven execution wrappers.
            Hide
            drulli Ulli Hafner added a comment -

            I see. Then I think that I will try to clean up the console log using various line filters before I hand out the result to the individual parsers (block-scoped is on my todo list, but I need a solution for freestyle jobs anyway). I already have a ConsoleNotesFilter and an AnsiColorFilter is on its way. Seems that I need to add an TimeStamperFilter as well.

            Show
            drulli Ulli Hafner added a comment - I see. Then I think that I will try to clean up the console log using various line filters before I hand out the result to the individual parsers (block-scoped is on my todo list, but I need a solution for freestyle jobs anyway). I already have a ConsoleNotesFilter and an AnsiColorFilter is on its way. Seems that I need to add an TimeStamperFilter as well.

              People

              • Assignee:
                smokris Steve Mokris
                Reporter:
                smokris Steve Mokris
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: