我有一个相当大的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解释中失败的非法角色。我意识到我可以关闭这个特别警告,但这不太理想。有没有办法防止这种情况发生?谢谢!
答案 0 :(得分:0)
所以看起来我可能在插件中发现了一个错误。我将发布我想出的工作,希望它可以帮助其他人解决问题。导致此问题的问题是Jenkins XML解析器无法读取警告说明中的某些字符。
因此,当您运行lint时,我建议将其输出到文件中,例如'lint-report-malformed.xml',然后另一个stackoverflow问题提供了一个Perl脚本,用于从文件中过滤无效字符。 How to remove invalid characters from an xml file using sed or Perl
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插件可以读取文件。