在Java中,“引用”是什么意思;“调用上下文”;(还有其他一些术语)?

在Java中,“引用”是什么意思;“调用上下文”;(还有其他一些术语)?,java,static-analysis,Java,Static Analysis,我试图理解Java字节码/源代码的静态分析 这些术语经常出现,我在互联网上找不到令人满意的定义: 上下文敏感分析 调用上下文 活动呼叫站点 分析要点 请任何人用外行的术语详细说明上述术语在Java上下文中的含义。 在Google上搜索“上下文”“编程”可以找到上下文相关语法、语言理论等方面的内容,但不能找到我需要的定义(除非它们的意思相同) 调用上下文:在分析某个位置的代码时,直接(假定)调用方的代码,或者更一般地说,导致该位置的(假定)调用方集合 活动呼叫站点:集中在直接呼叫方的“呼叫上下文

我试图理解Java字节码/源代码的静态分析

这些术语经常出现,我在互联网上找不到令人满意的定义:

  • 上下文敏感分析
  • 调用上下文
  • 活动呼叫站点
  • 分析要点
  • 请任何人用外行的术语详细说明上述术语在Java上下文中的含义。 在Google上搜索“上下文”“编程”可以找到上下文相关语法、语言理论等方面的内容,但不能找到我需要的定义(除非它们的意思相同)

    • 调用上下文:在分析某个位置的代码时,直接(假定)调用方的代码,或者更一般地说,导致该位置的(假定)调用方集合

    • 活动呼叫站点:集中在直接呼叫方的“呼叫上下文”的变体

    • 上下文敏感分析:考虑特定调用上下文的代码位置处的代码属性分析。进行此类分析的原因是,属性通常更为详细和精确

    • 敏感分析中的上下文:对代码位置的分析,考虑所有可能的调用上下文。这样做是因为它比上下文敏感分析更容易实现;它的缺点是答案往往不够精确

    • 指向分析:一种分析,用于确定每个指针分配(从而通过访问和更新)程序中该指针可选择的实体集。通常,感兴趣的实体由代码中的一组分配点表示,例如,在堆或本地块中的每个位置都可能发生任何实体的分配

      • 指向分析(或Java上下文中的引用分析)将尝试在编译时推断指针在运行时可能指向的所有对象。这是合理的,但是近似的

        上下文敏感(CS)指向分析,在分析函数时考虑函数的调用上下文。对于下面的程序,CS points to analysis可以推断x和z具有不同的信息点,即,如果y和w指向不同的对象,则它们指向不同的对象

        main() {
            x = foo(y);
            z = foo(w);
        }
        
        foo (a) {
            return a;
        }
        
        相反,上下文不敏感(CI)分析无法区分调用上下文和(不准确但可靠)推断x和z可能是别名(或可能指向同一对象)


        调用上下文是当前(调用当前)函数出现的一系列调用站点。在本例中,foo有两个调用上下文,一个位于main的第一个调用站点,另一个位于main的第2行。活动呼叫站点就是您正在分析的站点。

        。这些都是非常标准的CS条款。同意EJP。此外,请每次提出一个问题“SO社区不会为您编写完整的解决方案,不会对问题进行完整的演练,也不会为您进行背景研究,除非您的问题具体且集中在一个相当小的范围内。”我认为这并不适用,他问的是一个简单的问题,可以由对它有合理了解的人来回答,他没有把我们当作研究对象,我相信这不是你可以用谷歌搜索的东西。