0

我有一个相当大的 Android 项目,我正在尝试在其上运行 Android Lint。当我使用 --html 运行 lint 并生成一个 html 文件时,它工作正常。当我运行 lint --xml 虽然它会产生一个无效的 XML 文件。这是有问题的,因为我尝试将 Android Lint 集成到我们的 Jenkins 服务器中,而 Jenkins 需要 XML 文件。我得到的错误是:

org.xml.sax.SAXParseException; lineNumber: 144334; columnNumber: 141; 
An invalid XML character (Unicode: 0x{2}) was found in the value of attribute "{1}" 
and element is "0".

        explanation="You can replace certain strings, such as 1/2, and 1/4, with dedicated characters for these, such as ½ (½) and 

奇怪的是,它似乎因 Lint 解释中的非法字符而失败。我意识到我可以关闭这个特定的警告,但这并不理想。有什么办法可以防止这种情况发生吗?谢谢!

4

1 回答 1

0

所以看起来我可能在插件中发现了一个错误。我将发布我想出的工作,希望它可以在解决问题时帮助其他人。导致此问题的问题是 Jenkins XML 解析器无法读取警告说明中的某些字符。

因此,当您运行 lint 时,我建议将其输出到诸如“lint-report-malformed.xml”之类的文件中,然后另一个 stackoverflow 问题提供了一个用于从文件中过滤无效字符的 Perl 脚本。如何使用 sed 或 Perl 从 xml 文件中删除无效字符

perl -CSDA -pe'
   s/[^\x9\xA\xD\x20-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]+//g;
' lint-report-malformed.xml > lint-report.xml

现在 Jenkins 插件可以读取该文件。

于 2013-07-30T14:38:14.500 回答