scala - 对 Scala 函数中的每条语句进行计数的仪器
问题描述
我有一个简单的Scala函数,我想在每次执行语句时增加一个类变量。
class C {
var cnt: Int: 0
def fun(): Unit = {
var a: Int = 0
var b: Int = -10
var sum: Int = 0
sum = a + b
return sum
}
}
我希望函数是这样的:
class C {
var cnt: Int: 0
def fun(): Unit = {
var a: Int = 0
cnt = cnt + 1
var b: Int = -10
cnt = cnt + 1
var sum: Int = 0
cnt = cnt + 1
sum = a + b
cnt = cnt + 1
return sum
}
}
但是在软件级别这样做会使代码变得混乱。我可以使用字节码操作来实现这一点,还是应该干预其他级别的编译?
解决方案
我不确定是谁在这个问题中添加了标签 Byteman,但 Byteman 无法帮助您解决这个问题。正如之前的海报所说,这并不是一个可以使用字节码操作来解决的问题。字节码与源代码行和源语句边界有一个相当不透明的链接,并且通常不可能从字节码中编码的指令派生出任何一种类型的边界。
基于语言解析器的源到源翻译器将是一个更好的选择。
推荐阅读
- mysql - Reset performance of all queries in mysql 8
- puppeteer - Puppeteer 无限滚动不起作用
- laravel - 如何与收银员处理失败的订阅付款?
- javascript - 从数组的第一个索引的对象中解构值
- c# - 使用鼠标单击 GDI 线绘制
- discord - Discord 关注非公告(常规)频道
- create-react-app - .prettierrc 配置在 create-react-app 项目中不起作用
- oracle - 无法在plsql中打印异常
- java - Spring OAUTH2 登录如何与 REST API 一起使用?
- graphics - 用于视图合成的基于网格的翘曲与基于喷溅的翘曲