这就是我需要的:
我的javascript文件中有日志语句,它们看起来像这样:
log.d("这里有一些日志消息")
我想在复制任务期间为这些动态添加精细名称和行号。 好的,所以添加文件名可能很容易,但如何获取行号?奇怪的是,我找不到任何关于如何做到这一点的信息。
复制任务的filter()方法只是传递实际的行,如果传递2个参数 - 行号和行号,那就太好了。
这是我的任务模板。我添加了我需要实现的评论。
我知道我可以使用fileCpyDetails.getSourceName()从fileCopyDetails获取文件名,但我被卡住了 关于如何使用具有行号的新log.d语句替换以log.d()开头的行 我真的希望有人可以帮助我。
task addLineNumbers(type: Copy) {
into 'build/deploy'
from 'source'
eachFile { fileCopyDetails ->
// Here I need to add line number to log.d("message")
// to become log.d("[$fileName::$line] + $message")
// for example, if original line in userdetails.js file was log.d("something logged here")
// replace with log.d("[userdetails.js::43] something logged here")
}
}
答案 0 :(得分:0)
复制任务只是复制文件(它可以使用Ant filters或Groovy SimpleTemplateEngine过滤/扩展文件)。您正在寻找各种预处理器。我认为使用自定义Ant过滤器可以做到这一点,但它看起来很多工作。
我认为人们通常在运行时使用类似的东西来查找文件/行号:How can I determine the current line number in JavaScript?
答案 1 :(得分:0)
不是最优雅的解决方案,但对我有用:
task addLineNumbers(type: Copy) {
into 'build/deploy'
from 'source'
def currentFile = ""
def lineNumber = 1
eachFile { fileCopyDetails ->
currentFile = fileCopyDetails.getSourceName()
lineNumber = 1
}
filter { line ->
if (line.contains('log.d("')) {
line = line.replace('log.d("', "log.d(\"[${currentFile}::${lineNumber}]")
}
lineNumber++
return line
}
}