问题
- Jenkins集成Checkstyle插件,扫描到该文件时报错:
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: TokenStreamRecognitionException occurred while parsing file
- 使用IDEA Checkstyle插件扫面xxx文件,报错
The source file could not be parsed by Checkstyle.
分析
- 代码行数不多,差不多20行,直接肉眼看代码,找不到任何问题;
- 参考Google搜索结果,初步判断时文件中含有非法字符;
- Jenkins错误日志没有报告行数或非法字符内容,猜测可能是一个隐藏的非法字符,比如行首行尾或文件开始结尾存在非法字符。
解决
- 在IDEA中确认该文件的编码和其他文件一致,包括换行符等,确保非法字符不可能出现在行首行尾、文件开始或末尾的位置;
- mac可以直接在控制台用less或vi命令打开该文件,Windows需要上传文件至Linux服务器,在服务器上使用less 或vi打开文件;
- 用less打开文件后,发现文件中某个位置有一个隐藏的非法字符:
- 在IDEA中光标移动至该位置,发现没有任何字符,但是按下删除键后文件显示有改动,本地再次使用Checkstyle检查通过,提交后Jenkins插件扫描通过。