为JUnit 5修改方法和类的可见性

发表于2020年12月21日
作者:Alan Richardson
案例研究

为JUnit 5修改方法和类的可见性

发表于2020年12月21日
作者:Alan Richardson
查看资源
查看资源

为JUnit 5修改方法和类的可见性

编程的乐趣之一是需要不断地学习以保持更新。其中一个问题是,我们建立了熟悉的使用模式,这可能会影响新方法的采用。Sensei ,通过识别废弃的模式并提示我们继续使用的修复方法来帮助迁移。

举个例子,当我从JUnit 4迁移到JUnit 5时,我习惯于把所有的测试类和方法写成公共的。但在JUnit 5中,它们可以被打包为私有。

例如:而不是

public class Junit5VisibilityTest {
    @Test
    public void thisDoesNotNeedToBePublic(){
        Assertions.assertTrue(true);
    }
}


我真的想写。

class Junit5VisibilityTest {
    @Test
    void thisDoesNotNeedToBePublic(){
        Assertions.assertTrue(true);
    }
}


我花了一些时间来建立肌肉记忆,以编码到这一点,而且我仍然偶尔会失误。

使用Sensei

通过Sensei ,我可以创建配方,找到公共方法和类,并自动将声明修改为包的私有。

为了实现这一目标,我创建了一个配方。

名称 - JUnit。JUnit 5测试方法不需要公开
说明 - JUnit 5测试方法不需要公开可见性
等级 - 错误


我把它归类为错误,因为我想杜绝这种编码做法,而且当我在IDE中写代码时,我希望这个问题有更高的可见度。

修改集体宣言

为了找到类,我从Junit 5(即org.junit.jupiter.api.Test)中搜索有@Test子注解的任何类。

而在该类有修饰符public的地方。

search:
class:
with:
child:
annotation:
type:"org.junit.jupiter.api.Test"
修改器。"公共"

然后快速修复改变修改器,删除可见性,使其成为默认值,而默认值是包的私有性,这正是我所寻找的。

availableFixes:
- name: "remove public visibility from JUnit 5 Test class"
actions:
- changeModifiers:
visibility:""



修改方法声明

方法声明修正案的配方与类的配方基本相同。

首先,我搜索了JUnit 5中用@Test注解的公共方法。

搜索:
方法:
注释:
类型。"org.junit.jupiter.api.Test"
修改器。"公共"


然后我把修改器改成默认的可见性。

availableFixes:
- name: "Remove @Test method public visibility"
actions:
- changeModifiers:
visibility:""


提示:修改多种方法

Sensei 有能力对当前文件中的所有违规行为应用快速修复。

当我使用alt+enter来应用QuickFix时。

如果我展开QuickFix的名称菜单,我可以看到一个选项,即:。

"修复所有:'JUnit。JUnit 5测试方法不需要是公共的'文件中的问题"

当我选择该选项时,那么Sensei 将修正所有出现的问题,而不仅仅是我选择的那个。


移除测试方法的公众可见性

修改类别

与方法不需要公开一样,类也不需要公开。

我可以创建一个配方和一个QuckFix来修改类。

名称 - JUnit。Junit 5测试类不需要是公共的
说明 - Junit 5测试类不需要是公共的
等级 - 错误


当我找到一个公有的类,并且有一个带有@Test注解的方法。然后我想改变其可见性。

搜索:
class:
modifier:"public"
anyOf:
- child:
method:
annotation:
type:"测试"


我可以再次用changeModifiers动作对类的定义进行修改。

availableFixes:
- name: "Remove @Test class public visibility"
actions:
- changeModifiers:
visibility:""


摘要

一个静态分析工具最初提醒我注意JUnit中推荐的这种方法。但静态分析工具并没有帮助我建立肌肉记忆,在编程时改变我的代码。

使用 "级别 "来提醒你。当它是一个我试图在我的编码中杜绝的问题时,我最初把它定为 "错误",然后在我放弃编码方法时减少它。

请记住,你可以使用Sensei ,在应用快速修复时使用下拉菜单选项,同时修复当前文件的所有问题。

通过创建一个Sensei ,我可以实时看到我以前的编码方法。而且,如果我在编码中偶尔出现失误,可以快速修复它,以加强该方法。

---

你可以使用 "Preferences \ Plugins"(Mac)或 "Settings \ Plugins"(Windows)从IntelliJ内部安装Sensei ,然后只要搜索 "sensei secure code"。

这方面的源代码和配方可以在Secure Code Warrior GitHub账户的`sensei-blog-examples`仓库中的`junitexamples`模块中找到。



查看资源
查看资源

作者

艾伦-理查德森

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

为JUnit 5修改方法和类的可见性

发表于2020年12月21日
作者:Alan Richardson

为JUnit 5修改方法和类的可见性

编程的乐趣之一是需要不断地学习以保持更新。其中一个问题是,我们建立了熟悉的使用模式,这可能会影响新方法的采用。Sensei ,通过识别废弃的模式并提示我们继续使用的修复方法来帮助迁移。

举个例子,当我从JUnit 4迁移到JUnit 5时,我习惯于把所有的测试类和方法写成公共的。但在JUnit 5中,它们可以被打包为私有。

例如:而不是

public class Junit5VisibilityTest {
    @Test
    public void thisDoesNotNeedToBePublic(){
        Assertions.assertTrue(true);
    }
}


我真的想写。

class Junit5VisibilityTest {
    @Test
    void thisDoesNotNeedToBePublic(){
        Assertions.assertTrue(true);
    }
}


我花了一些时间来建立肌肉记忆,以编码到这一点,而且我仍然偶尔会失误。

使用Sensei

通过Sensei ,我可以创建配方,找到公共方法和类,并自动将声明修改为包的私有。

为了实现这一目标,我创建了一个配方。

名称 - JUnit。JUnit 5测试方法不需要公开
说明 - JUnit 5测试方法不需要公开可见性
等级 - 错误


我把它归类为错误,因为我想杜绝这种编码做法,而且当我在IDE中写代码时,我希望这个问题有更高的可见度。

修改集体宣言

为了找到类,我从Junit 5(即org.junit.jupiter.api.Test)中搜索有@Test子注解的任何类。

而在该类有修饰符public的地方。

search:
class:
with:
child:
annotation:
type:"org.junit.jupiter.api.Test"
修改器。"公共"

然后快速修复改变修改器,删除可见性,使其成为默认值,而默认值是包的私有性,这正是我所寻找的。

availableFixes:
- name: "remove public visibility from JUnit 5 Test class"
actions:
- changeModifiers:
visibility:""



修改方法声明

方法声明修正案的配方与类的配方基本相同。

首先,我搜索了JUnit 5中用@Test注解的公共方法。

搜索:
方法:
注释:
类型。"org.junit.jupiter.api.Test"
修改器。"公共"


然后我把修改器改成默认的可见性。

availableFixes:
- name: "Remove @Test method public visibility"
actions:
- changeModifiers:
visibility:""


提示:修改多种方法

Sensei 有能力对当前文件中的所有违规行为应用快速修复。

当我使用alt+enter来应用QuickFix时。

如果我展开QuickFix的名称菜单,我可以看到一个选项,即:。

"修复所有:'JUnit。JUnit 5测试方法不需要是公共的'文件中的问题"

当我选择该选项时,那么Sensei 将修正所有出现的问题,而不仅仅是我选择的那个。


移除测试方法的公众可见性

修改类别

与方法不需要公开一样,类也不需要公开。

我可以创建一个配方和一个QuckFix来修改类。

名称 - JUnit。Junit 5测试类不需要是公共的
说明 - Junit 5测试类不需要是公共的
等级 - 错误


当我找到一个公有的类,并且有一个带有@Test注解的方法。然后我想改变其可见性。

搜索:
class:
modifier:"public"
anyOf:
- child:
method:
annotation:
type:"测试"


我可以再次用changeModifiers动作对类的定义进行修改。

availableFixes:
- name: "Remove @Test class public visibility"
actions:
- changeModifiers:
visibility:""


摘要

一个静态分析工具最初提醒我注意JUnit中推荐的这种方法。但静态分析工具并没有帮助我建立肌肉记忆,在编程时改变我的代码。

使用 "级别 "来提醒你。当它是一个我试图在我的编码中杜绝的问题时,我最初把它定为 "错误",然后在我放弃编码方法时减少它。

请记住,你可以使用Sensei ,在应用快速修复时使用下拉菜单选项,同时修复当前文件的所有问题。

通过创建一个Sensei ,我可以实时看到我以前的编码方法。而且,如果我在编码中偶尔出现失误,可以快速修复它,以加强该方法。

---

你可以使用 "Preferences \ Plugins"(Mac)或 "Settings \ Plugins"(Windows)从IntelliJ内部安装Sensei ,然后只要搜索 "sensei secure code"。

这方面的源代码和配方可以在Secure Code Warrior GitHub账户的`sensei-blog-examples`仓库中的`junitexamples`模块中找到。



我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。