codefuse-ai / CodeFuse-Query

Query-Based Code Analysis Engine
Apache License 2.0
200 stars 22 forks source link

自定义注解 如何查询这个接口方法调用链 #46

Closed importzhh closed 6 months ago

importzhh commented 6 months ago

springboot项目自定义注解实现的接口例如 @FunController public String test() { } 能否解析这种自定义注解 如何查询这个接口方法调用链

ValKmjolnir commented 6 months ago

接口方法调用链可以参考最新 merge 的这个测试文件: CallChain.gdl

pub fn specified_callable_signature(name: string) -> bool {
    // give specified callables' signatures here
    [
        {"com.alipay.demo.Main.test:void()"},
        {"xxx"},
        {"xxx"}
    ]
}

在上面这个方法里填上你需要搜索的接口签名,这个地方我给了一个样例签名。

另外注解理论上都可以通过 Annotation::getName() 来获取名称,你可以用这个方法来筛选需要的注解,下面是样例:

pub fn get_annotation_name() -> *string {
    for(a in Annotation(JavaDB::load("coref_java_src.db"))) {
        yield a.getName()
    }
}