-
Bug
-
Resolution: Not A Defect
-
Minor
-
None
-
Windows 10 VM, Jenkins 2.156, warnings-ng 1.0.0
Since migrating to warnings-ng 1.0.0, open task scanner throws "java.nio.charset.UnmappableCharacterException" on a handful of files that the old open tasks plugin could read in without complaint.
Some of the files in question are UTF-8 with BOM, some without. The Delphi IDE saves them as UTF-8 with BOM automatically when the file contains unicode characters.
The attached files (with and without BOM) display fine in the Delphi IDE, VS Code and Notepad++.
{{[Open Tasks Scanner] [ERROR] Exception while reading the source code file 'F:\Jenkins\workspace_Test - Migration - Warnings NG\McdLib\RAC.CharacterConsts.pas':
[Open Tasks Scanner] [ERROR] java.nio.charset.UnmappableCharacterException: Input length = 1
[Open Tasks Scanner] [ERROR] at java.nio.charset.CoderResult.throwException(Unknown Source)
[Open Tasks Scanner] [ERROR] at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
[Open Tasks Scanner] [ERROR] at sun.nio.cs.StreamDecoder.read(Unknown Source)
[Open Tasks Scanner] [ERROR] at java.io.InputStreamReader.read(Unknown Source)
[Open Tasks Scanner] [ERROR] at java.io.BufferedReader.fill(Unknown Source)
[Open Tasks Scanner] [ERROR] at java.io.BufferedReader.readLine(Unknown Source)
[Open Tasks Scanner] [ERROR] at java.io.BufferedReader.readLine(Unknown Source)
[Open Tasks Scanner] [ERROR] [wrapped] java.io.UncheckedIOException: java.nio.charset.UnmappableCharacterException: Input length = 1
[Open Tasks Scanner] [ERROR] at java.io.BufferedReader$1.hasNext(Unknown Source)
[Open Tasks Scanner] [ERROR] at java.util.Spliterators$IteratorSpliterator.tryAdvance(Unknown Source)
[Open Tasks Scanner] [ERROR] at java.util.Spliterators$1Adapter.hasNext(Unknown Source)
[Open Tasks Scanner] [ERROR] at io.jenkins.plugins.analysis.warnings.tasks.TaskScanner.scanTasks(TaskScanner.java:231)
[Open Tasks Scanner] [ERROR] at io.jenkins.plugins.analysis.warnings.tasks.TaskScanner.scan(TaskScanner.java:197)
[Open Tasks Scanner] [ERROR] at io.jenkins.plugins.analysis.warnings.tasks.AgentScanner.invoke(AgentScanner.java:91)
[Open Tasks Scanner] [ERROR] at io.jenkins.plugins.analysis.warnings.tasks.AgentScanner.invoke(AgentScanner.java:28)
[Open Tasks Scanner] [ERROR] at hudson.FilePath.act(FilePath.java:1078)
[Open Tasks Scanner] [ERROR] at hudson.FilePath.act(FilePath.java:1061)
[Open Tasks Scanner] [ERROR] at io.jenkins.plugins.analysis.warnings.tasks.OpenTasks.scan(OpenTasks.java:159)
[Open Tasks Scanner] [ERROR] at io.jenkins.plugins.analysis.core.steps.IssuesScanner.scan(IssuesScanner.java:64)
[Open Tasks Scanner] [ERROR] at io.jenkins.plugins.analysis.core.steps.IssuesRecorder.scanWithTool(IssuesRecorder.java:654)
[Open Tasks Scanner] [ERROR] at io.jenkins.plugins.analysis.core.steps.IssuesRecorder.record(IssuesRecorder.java:622)
[Open Tasks Scanner] [ERROR] at io.jenkins.plugins.analysis.core.steps.IssuesRecorder.perform(IssuesRecorder.java:597)
[Open Tasks Scanner] [ERROR] at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:80)
[Open Tasks Scanner] [ERROR] at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:67)
[Open Tasks Scanner] [ERROR] at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1$1.call(SynchronousNonBlockingStepExecution.java:51)
[Open Tasks Scanner] [ERROR] at hudson.security.ACL.impersonate(ACL.java:290)
[Open Tasks Scanner] [ERROR] at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1.run(SynchronousNonBlockingStepExecution.java:48)
[Open Tasks Scanner] [ERROR] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
[Open Tasks Scanner] [ERROR] at java.util.concurrent.FutureTask.run(Unknown Source)
[Open Tasks Scanner] [ERROR] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[Open Tasks Scanner] [ERROR] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[Open Tasks Scanner] [ERROR] at java.lang.Thread.run(Unknown Source)
}}
[JENKINS-55350] Open Tasks Scanner throws java.nio.charset.UnmappableCharacterException
Comment |
[ Can't get the formatting right without the content being screwed up, so here it is again // Collect open tasks recordIssues( enabledForFailure: true, failedNewHigh: 0, tools: [ taskScanner( includePattern: '**/*.pas, **/*.dpr', excludePattern: 'Packages/**', ignoreCase: true, isRegularExpression: true, sourceCodeEncoding: 'UTF-8', highTags: '(?i)^.*(?://|\\{|\\(\\*)\\s*(FIXME)(?:\\s|:|-)+(.*)$', normalTags: '(?i)^.*(?://|\\{|\\(\\*)\\s*(TODO)(?:\\s|:|-)+(.*)$', lowTags: '(?i)^.*(?://|\\{|\\(\\*)\\s*(##[A-Z]{2})(?:\\s|:|-)+(.*)$' ) ] ) ] |
Comment |
[ {{ // Collect open tasks recordIssues( enabledForFailure: true, failedNewHigh: 0, tools: [ taskScanner( includePattern: '**/*.pas, **/*.dpr', excludePattern: 'Packages/**', ignoreCase: true, isRegularExpression: true, sourceCodeEncoding: 'UTF-8', highTags: '(?i)^.*(?://|\\{|\\(\\*)\\s*(FIXME)(?:\\s|:|-)+(.*)$', normalTags: '(?i)^.*(?://|\\{|\\(\\*)\\s*(TODO)(?:\\s|:|-)+(.*)$', lowTags: '(?i)^.*(?://|\\{|\\(\\*)\\s*(##[A-Z]{2})(?:\\s|:|-)+(.*)$' ) ] ) }} ] |
Rank | New: Ranked higher |
Rank | New: Ranked higher |
I added a test case with your files that actually passes. What sourceCodeEncoding did you specify? I also improved logging so you will see the encoding that has been actually used. This will be part of the next release, I let you know if it is finished.