【问题标题】:Jenkins sonarscanner shows enconding warningsJenkins sonarscanner 显示编码警告
【发布时间】:2021-05-16 01:02:41
【问题描述】:

我刚刚部署了一个基于 jenkins 和 sonarqube 的 CI 系统。一旦 Jenkins Sonnarscanner 开始他的管道部分,我可以看到很多消息,如下所示:

WARN: Invalid character encountered in file /var/jenkins_home/workspace/Pipeline Test/code/..../CodigoSitioDAO.java at line 3 for encoding UTF-8. Please fix file content or configure the encoding to be used using property 'sonar.sourceEncoding'.

嗯,我的声纳呼叫线路是:

                                sh "${scannerHome}/bin/sonar-scanner \
                                -Dsonar.sourceEnconding=UTF-8 \
                                -Dsonar.projectKey=My_Project\
                                -Dsonar.sources=. \
                                -Dsonar.java.binaries=. \
                                -Dsonar.nodejs.executable=. \
                                -Dsonar.login=c9bb378b2380af844c7465424933b942d10f5d18 \
                                -Dsonar.host.url=http://sonarqube:9000"
                            }

所以,一旦我检查了上述文件,我在第 3 行看到的内容与警告消息无关:import java.sql.Connection;

还配置了-Dsonar.sourceEncoding=UTF-8,我不得不说我不知道​​发生了什么。

你们中的任何人都可以帮助我吗?

【问题讨论】:

  • 假设您已经复制并粘贴了您的 Jenkins 管道,您在 -Dsonar.sourceEnconding 中有错字。请更正它并检查问题是否仍然存在。
  • 好吧,我在发布我的信息后就注意到了,但无论如何谢谢。我已经修复了它,但我不得不说警告仍然存在......
  • 这还是有道理的。该消息表示该文件不是 UTF-8 格式,因为它包含不适合 UTF-8 的字节序列。请在一些二进制查看器中调查该文件实际上是什么在这一行周围,也许是一些不可打印的字符?您也可以尝试在文本编辑器中打开文件并明确选择 UTF-8 重新保存。
  • 该文件是 UTF-8...但是,我知道行数包括注释掉的行数,所以这个文件的第 3 行是: * Prop�sito: Clase de implementaci�n del DAO de los c�digos que puede tener 所以,我担心这只不过是我是新手 :) 再次感谢

标签: jenkins encoding utf-8 sonarqube sonarscanner


【解决方案1】:

在我看来,该文件不是 UTF-8 格式。很有可能(特别是如果您使用 Windows 编辑器)该文件以某些特定于平台的编码保存,并且其内容对 UTF-8 没有意义。考虑以下几点:

Clase de implementación del DAO de los códigos

相同的内容已保存为 ANSI 和 UTF-8(保存时明确选择)。现在如果你比较字节内容,这些是不一样的:

$ hexdump -C test-ansi.txt
00000000  43 6c 61 73 65 20 64 65  20 69 6d 70 6c 65 6d 65  |Clase de impleme|
00000010  6e 74 61 63 69 f3 6e 20  64 65 6c 20 44 41 4f 20  |ntaci.n del DAO |
00000020  64 65 20 6c 6f 73 20 63  f3 64 69 67 6f 73        |de los c.digos|
0000002e

$ hexdump -C test-utf8.txt
00000000  43 6c 61 73 65 20 64 65  20 69 6d 70 6c 65 6d 65  |Clase de impleme|
00000010  6e 74 61 63 69 c3 b3 6e  20 64 65 6c 20 44 41 4f  |ntaci..n del DAO|
00000020  20 64 65 20 6c 6f 73 20  63 c3 b3 64 69 67 6f 73  | de los c..digos|
00000030

请注意,相同的字符 ó 在 ANSI 中编码为 f3,在 UTF-8 中编码为 c3 b3。我相信这就是您要传达的信息:声明的编码为 UTF-8(可能是默认值),但字符内容 f3 在此编码下无效。请使用十六进制编辑器仔细检查您的编码。

旁注:如果您直接从文件中复制并粘贴您的行,请注意 Stack Overflow 也无法对其进行解码,确认它不是 UTF-8 编码的。 p>

【讨论】:

  • 非常感谢您的解释。我做了一些进一步的研究,我了解到所有这些问题都是因为当前的 git 存储库内容是从旧的 svn 移到这里的,并且文件传输没有完成编码。
猜你喜欢
  • 1970-01-01
  • 2019-11-30
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 2023-03-17
相关资源
最近更新 更多