我们在公司使用 liquibase 已经有一段时间了,我们已经为数据库迁移设置了一个持续集成环境,当补丁出现错误时,它会破坏工作。
该 CI 环境的一个有趣“特征”是破坏有一个“可能的罪魁祸首”,因为所有补丁都需要有一个“作者”,并且错误消息显示作者姓名。
如果你不知道什么是 liquibase,没关系,这不是重点。
关键是:在错误后面加上人名对软件开发过程非常有好处:问题得到解决的速度更快。
所以我在想:Java 堆栈跟踪有可能吗?
我们是否可能有一个带有人名和行号的堆栈跟踪,如下所示?
java.lang.NullPointerException
at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372:john)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121:mike)
at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232:bob)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173:bob)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87:bob)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862:john)
这种信息必须从 SCM 系统中提取出来(比如对每个源文件执行“svn blame”)。
现在,暂时忘记浪费编译时间:这可能吗?像这样将元数据添加到类文件中?