Change Impact Analysis for Object-Oriented Programs 总结

  • 代码变更影响分析

www.fireknight.tech 个人博客,欢迎访问,CSDN不定期更新

  • ABSTRACT

    • subtype和动态类型绑定导致代码中小的变更会带来较大的或者无法定位的影响
    • 主要贡献
      • 程序变更和语义影响相关联
      • 用于精确化回归测试
      • 通过测试,寻找相应的变更
  • Intro

    • 问题:子类型和动态分配
    • 过程
        1. 源代码映射到原子更改
        2. 确定依赖顺序
        3. 对原子变化和测试程序,执行静态分析
    • 可以得到如下
      • T(测试)的子集T’,可能受到修改A的影响
      • 可能影响某一个测试t对应的修改a
      • 导出和T无关的代码更改,允许程序员忽略和T无关的变化
      • 覆盖率提醒:提醒程序员哪些修改尚未被覆盖
    • 基础:调用图
  • 动机介绍

    • 加入、修改 类、方法会导致结果的完全不同
  • Changes

    • 本文将修改分为以下几个部分

    在这里插入图片描述
    • 将代码修改映射为原子变更

      • 任何代码都可以对应到特定的原子变更
    • 各个原子的详细介绍见论文

    • Changes affecting method dispatch – LC的详细介绍

      • 在这里插入图片描述

      • lookup

        • 三个参数:
          • 运行时接收者
          • 静态标记方法
          • 实际调用方法
        • <C, A.m, B.m> A.m是声明方法,C继承于A,B是C的最近的祖先并且包含了A.m,即C < B < A
      • LC

        • <C, A.m>
        • 计算
          • 按照定义从头开始建模运行时类型和方法签名的层次结构,但有开销
          • 每次编辑后更新lookup映射 √ 见后文
      • SameLookup(B, f())

        • 在每次的调用后,最终都调用了B.f(), 有C<B<Y的继承关系
    • 变更计算

      • 在这里插入图片描述

      • 举例关于LC的计算

        • LC是标识当前代码调用的符号关系代号,新旧版本的相同LC实际含义发生变更,则有代码变更影响
        • 举例
          • 原来有Professor.toString(),会有lookup如下

            • 在这里插入图片描述
          • 增加Person.toString(),会有lookup如下

            • 在这里插入图片描述
          • LC为

            • 在这里插入图片描述

            • 这两个代表的动态调用发生了变化

    • 顺序

      • 只考虑必须满足以确保可编译性的语法依赖关系。
      • 单个的变更(包含其依赖)可以生成新的程序p’,并且p’也是可运行的。变更组合会形成P’(新代码)
  • 代码变动影响力分析

    • 程序P,测试T = t1, · · · , tn
    • Nodes(P, ti) 测试ti经过的方法
    • Edges(P, ti) 方法调用
      • A.m →C B.n A.m到B.n通过对C的调用
    • 计算

      • 在这里插入图片描述

      • AffectedTests(T ,A) 受A影响的测试

        • 对于每一个测试,测试经过的Nodes(P, ti)有过修改,并且调用发生了Lookup change, 则测试受到影响
        • 有一次当前调用图,然后修改。精确测试回归选择:可以找到影响了的测试
      • AffectingChanges(t,A) 影响测试t的代码变更

        • 对任何一个修改,如果修改在测试t的路径(新测试的节点)上,或者修改属于lookupchange(LC涉及到新测试t的调用),则修改影响了测试t
        • 两个版本代码,两个调用图。可以找到测试对应的修改。
    • 效果:

      • 代码变动,affectedTest为空,说明测试不足。affectTest是找到影响的测试,如果没找到,就说明测试不足。
      • 代码变动,affectTest不为空,说明有测试受到影响。则测试是否需要修改是程序员要考虑的问题。
      • 代码修改后,测试可能产生错误。使用affectingChange寻找相关修改,用来debug。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: rainloop-change-password-plugin-mysql是RainLoop Webmail的一个插件,用于通过MySQL数据库来更改用户的密码。 该插件的主要功能是与MySQL数据库进行交互,并允许用户通过RainLoop Webmail界面更改他们的密码。通过此插件,用户可以方便地修改自己的密码,而无需通过其他方式进行操作。 使用该插件需要先安装和配置RainLoop Webmail,并将其与MySQL数据库进行连接。然后,将rainloop-change-password-plugin-mysql插件添加到RainLoop Webmail的插件目录中。接下来,需要对插件进行配置,包括指定MySQL数据库的连接参数和用户表名称等。 一旦插件配置完毕,用户可以通过登录RainLoop Webmail界面,并导航到更改密码的选项。在该选项中,用户可以输入当前密码和新密码,并通过插件与MySQL数据库进行通信,更改其密码。插件将验证用户提供的当前密码是否与数据库中存储的密码匹配,并在匹配成功时将新密码存储到数据库中。 rainloop-change-password-plugin-mysql插件为RainLoop Webmail用户提供了更方便的方式来更改他们的密码,同时利用MySQL数据库的强大功能来存储和验证用户密码,增强了密码的安全性和可靠性。 ### 回答2: RainLoop是一种开源的webmail客户端,用于访问和管理电子邮件。RainLoop中有一个插件叫做Change Password Plugin,它提供了一个用户可以更改其电子邮件账户密码的功能。该插件与MySQL数据库进行了集成,以便将新密码保存到数据库中。 使用RainLoop的Change Password Plugin时,用户可以在登录到RainLoop时通过该插件更改其电子邮件账户密码。插件通过与MySQL数据库进行连接,将新密码存储在用户的数据库记录中。这确保了该新密码可以在用户下次登录时被验证有效。 MySQL作为后端数据库提供了可靠和稳定的存储解决方案。它能够存储和管理用户的登录凭据,包括用户名和加密后的密码。Change Password Plugin将用户提供的新密码保存到MySQL数据库中,并根据系统管理员的设置对密码进行加密。这种加密机制可以确保用户密码的安全性,防止未经授权的访问。 RainLoop的Change Password Plugin非常方便,因为它为用户提供了一种在一个地方更改其电子邮件密码的方法。用户不需要在多个地方修改密码,只需使用RainLoop的界面进行该操作即可。此外,与使用其他电子邮件客户端可能需要更改密码的情况相比,使用RainLoop的Change Password Plugin可以减少用户对系统管理员的依赖。 总的来说,rainloop-change-password-plugin-mysql是RainLoop webmail客户端的一个插件,使用户可以方便地更改其电子邮件账户的密码,并使用MySQL数据库将新密码存储起来,确保密码的安全性和可靠性。通过使用这个插件,用户可以在一个地方轻松地管理他们的电子邮件密码,减少对系统管理员的依赖。 ### 回答3: RainLoop Change Password Plugin是一个用于RainLoop Web邮件客户端的插件,用于允许用户更改他们的密码。而MySQL是一种流行的关系型数据库管理系统。 该插件的目的是提供一个简便的方式,让用户在RainLoop中更改他们的密码,而无需依赖其他系统或工具。它通过与MySQL数据库进行交互,将新密码与用户的邮箱地址关联存储在数据库中。 通过RainLoop Change Password Plugin,用户可以在登录RainLoop后选择更改密码选项。然后他们需要输入当前密码以及新密码两次进行确认。然后插件会检查用户提供的当前密码是否与存储在数据库中的密码匹配。如果匹配成功,新密码将被散列加密并替换旧密码存储在数据库中。 MySQL在这个过程中起到关键作用。它作为存储用户信息的数据库,提供了数据的持久化和安全性。插件利用MySQL的功能来存储和验证用户密码,确保安全存储和传输用户密码。 总的来说,RainLoop Change Password Plugin是一个为RainLoop Web邮件客户端设计的插件,它通过与MySQL数据库交互,提供了一个安全且方便的方法,让用户更改他们的密码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值