PMD检查任务如果需要生成xml报告,对中文处理并不理想。
如果系统支持UTF-8编码,则它会对中文进行UTF-8编码,并作为xml实体引用。
若使用xslt任务将xml报告生成html,则会出现实体引用未定义的错误。
解决:一般来说,规则名称和检查的包、类名称都不可能出现中文字符,只有错误描述有可能出现,所以可以找到XMLRenderer,将其对错误描述字符的处理进行修改。
原本是:StringUtil.appendXmlEscaped(buf, rv.getDescription());
修改为:buf.append("<![CDATA").append(rv.getDescription()).append("]]>");
这样基本可以解决问题。然后使用PMD自带的build文件重新打包:ant dist
如果系统支持UTF-8编码,则它会对中文进行UTF-8编码,并作为xml实体引用。
若使用xslt任务将xml报告生成html,则会出现实体引用未定义的错误。
解决:一般来说,规则名称和检查的包、类名称都不可能出现中文字符,只有错误描述有可能出现,所以可以找到XMLRenderer,将其对错误描述字符的处理进行修改。
原本是:StringUtil.appendXmlEscaped(buf, rv.getDescription());
修改为:buf.append("<![CDATA").append(rv.getDescription()).append("]]>");
这样基本可以解决问题。然后使用PMD自带的build文件重新打包:ant dist