高级功能
本指南涵盖了 Gradle Parser 的高级功能,包括源码映射、自定义解析配置和专门的使用场景。
源码感知解析
源码感知解析跟踪原始文件中每个解析元素的确切位置,实现精确修改和详细分析。
基本源码映射
go
import "github.com/scagogogo/gradle-parser/pkg/api"
// 使用源码映射解析
result, err := api.ParseFileWithSourceMapping("build.gradle")
if err != nil {
log.Fatal(err)
}
sourceMappedProject := result.SourceMappedProject
// 访问带有源位置的依赖
for _, dep := range sourceMappedProject.SourceMappedDependencies {
dependency := dep.Dependency
sourceRange := dep.SourceRange
fmt.Printf("依赖: %s:%s:%s\n",
dependency.Group, dependency.Name, dependency.Version)
fmt.Printf(" 位置: 第%d行,第%d列 到 第%d行,第%d列\n",
sourceRange.Start.Line, sourceRange.Start.Column,
sourceRange.End.Line, sourceRange.End.Column)
fmt.Printf(" 原始文本: %s\n", dep.RawText)
}
自定义解析器配置
性能优化
为特定用例配置解析器:
go
import "github.com/scagogogo/gradle-parser/pkg/parser"
// 仅用于依赖提取的高性能配置
fastParser := parser.NewParser().
WithSkipComments(true). // 跳过注释处理
WithCollectRawContent(false). // 不存储原始内容
WithParsePlugins(false). // 跳过插件解析
WithParseRepositories(false). // 跳过仓库解析
WithParseTasks(false) // 跳过任务解析
result, err := fastParser.ParseFile("build.gradle")
if err != nil {
log.Fatal(err)
}
// 只会解析依赖
dependencies := result.Project.Dependencies
fmt.Printf("找到 %d 个依赖\n", len(dependencies))
下一步
探索更多高级主题: