引用原错误提交来.
本页的目的是汇总初始发现并全面替换全RIJava代码库中所有日志报表如下:
前头if(Loging.Logging)日志.warn
后传warn日志
初始方法包括尝试创建 sED脚本,遍历.java文件并识别日志语句需要修改单页制作来显示日志语句样本需要正确解析修改
SED允许执行词法替换和修改字符序列然而,这还不够,因为我们需要能够对日志语句作下列语法分析:
- 识别并剖析布林表达式任意
if
语句 :样本6,样本9,样本10,样本11,样本22. - 正确识别“ Logoger”变量样本16,样本25.
- 正确识别日志对象以提取日志级别样本12,样本14,样本15,样本19,样本20,样本21.
- 日志语句内跟踪方法调用样本7,样本12,样本19,样本20,样本21,样本24.
- 修改原日志语句时保留原源码格式化,即使它符合编码标准样本1,样本8,样本17.
以上要求解析ava代码片段进AST表示式(抽象语法树),适当修改树并写回源码文本简单原型Java解析库javaparser来.可惜库记不住源文件原白空间格式化,所以当它写回文本窗体时,会有很多非语法白空间修改
EclipseJDT及其avaaaST解析实现前景很好看 允许完全控制白空间格式化控制单行ava应用中使用JDT框架需要大量工作,所以日志修复需要写成Eclipse插件下图文章内容并就如何实现基本实现提供指南
5注释
未知用户
IntelliJ结构搜索替换特征,允许你访问AST。免费版不可用,但最终版可评价(我有终极版拷贝)。
见:
http://www.jetbrains.com/idea/documentation/ssr.html
http://www.onboard.jetbrains.com/articles/04/10/ssr/
未知用户
基本思想如何实现 ASTs是这样:
静态终级日志=日志Category.getInstance("ManagerManager") : null;
私有静态终极FILTERLOGING
万一找不到,假设
寻宝
类执行日志或LOGGING.LOGGING
if it does notif
类别内含有第2步识别变量名称的语句if
语句表示所有含有方法调用的第1步识别变量名称指令随附方法引用log.warn("...");
或log.info("...");
if
三步表单表达式&& log.isDebugEnabledFor(Level.WARN)
IntelliJ能执行这样的操作吗?
未知用户
改变的主要原因是避免字符串拼接后评价日志采集器记录强度吗?
if so,我认为,如果帮助者方法添加到日志API中,则改变需求即告消去。
未知用户
举个例子
未知用户
部分统计:RI源码库中约5 894日志
grep-rloging*grep-vsvn
5894