自动添加一个私有构造函数与Sensei
自动添加一个私有构造函数与Sensei
在一个实用类中,当字段和方法都是静态的时候,没有明显的理由让我把它实例化。
例如,UtilityClass utility = new UtilityClass()。
下面的代码是一个实用程序类的简单实现。
public class UtilityClass {
public static final Boolean ULTIMATE_TRUTH = true;
public static boolean getTrue(){
return ULTIMATE_TRUTH;
}
}
这是静态分析工具可以发现的编码模式类型,但它们往往不提供修复问题的能力。
我可以使用Sensei 来识别编码模式,并自动生成一个私有构造函数,使我无法实例化该类。
搜索类
我将在公用事业类上添加一个新的配方,名为。
- 静态类:创建私有构造函数。

而最初,我将创建一个简单的匹配器来搜索一个类。
搜索。
class: {}
这将匹配任何类,这足以让我开始写一个快速修复。一旦我有了一个有效的快速修复方法,我将改进搜索,使其在更有可能出现需要私有构造函数的类时突出显示。

快速修复
对于快速修复,我将希望生成一个私有构造函数。
在示例类中,这将看起来像。
Private UtilityClass(){}。
为了将上述代码添加到我的类中,我的快速修复将添加一个方法,而该方法的名称将是一个使用类名的Mustache模板。
可用的修复方法。
- name: "add private constructor"
actions:
- addMethod:
method: "private {{{ name }}}(){}"
在GUI编辑器中,我使用显示变量来创建小胡子模板,然后编辑字段,添加私有修饰符、大括号和小括号,使其在语法上正确。

现在,这将允许我在任何类中添加一个私有构造函数。
QuickFix的预览功能对我有帮助,因为我可以在编写Mustache模板时看到生成的代码。

现在我知道我可以解决这个问题了。我将细化搜索条件,在最合适的时候显示食谱。
搜索缺失的结构体
理想情况下,我不希望创建一个对每个类都标记错误的配方。因此,我将在搜索中添加一些额外的条件,以便我们只匹配那些没有构造函数的类。
搜索。
class:
without:
child:
method:
constructor: true
YAML与GUI略有不同。
在GUI中,我将其配置为寻找一个没有子方法的类,该方法是一个构造函数'yes'。我们在GUI中使用'yes'而不是'true',以使GUI更加人性化。

这个配方现在只对任何没有构造函数的类显示出来。
缩小搜索范围,寻找可能的肇事者
所以我可能想进一步寻找静态方法或字段的存在。
我寻找任何没有构造函数的类,它有所有公共静态字段或所有公共静态方法。
搜索。
class:
with:
anyOf:
- child:
method:
allOf:
- modifier:"public"
- 修改器。"static"
- child:
field:
allOf:
- modifier:"static"
- 修饰语:"static" "public"
without:
child:
method:
constructor: true
由于Sensei 是用来帮助我这个程序员在IDE中,而不是静态地分析代码和报告所有的错误,这个过滤器足以排除我的代码库中的大多数类,在这些类中我可能有充分的理由拥有一个默认的公共构造函数。
在一些项目中,这可能会走得太远,因为实用类可能有私有方法,所以我可能会选择寻找 "任何 "公共静态方法的存在,而不是 "所有"。
- 子项:
领域:
anyOf:
- 修饰语。"static"
- 修改器。"公共"
提示
Sensei 不是用来取代静态分析工具的。Sensei 可以增强静态分析工具,以解决与你的编码过程或技术有关的常见问题。通过复制足够的匹配来突出一个问题,并通过生成快速修复代码来支持开发过程。
我想做的是创造一个足够简单的配方,包括我需要的所有情况,但要对它进行过滤,以便它不会在每个班级都被推荐。
在研究配方时,我试图降低它们的风险,在这种情况下,我不确定是否可以创建私有构造函数,所以我先创建了QuickFix。然后重构了搜索条件,使其更加具体。
有时在研究食谱时,我不确定如何进行搜索,所以我先在这方面下功夫。
我发现当我逐步建立配方时,在重构QuickFix和搜索之间切换,更容易创建配方。
---
你可以使用 "Preferences\ Plugins"(Mac)或 "Settings\ Plugins"(Windows)从IntelliJ内部安装Sensei ,然后只需搜索 "sensei secure code"
这方面的源代码和配方可以在Secure Code Warrior GitHub账户的`sensei-blog-examples`仓库中找到,在`pojoexamples`模块中。
https://github.com/securecodewarrior/sensei-blog-examples
Alan Richardson拥有超过20年的专业IT经验,他曾作为一名开发人员,在测试层次的各个层面工作,从测试员到测试主管。在Secure Code Warrior ,他是开发者关系主管,直接与团队合作,以改善高质量安全代码的开发。Alan是四本书的作者,包括 "Dear Evil Tester "和 "Java For Testers"。艾伦还创建了在线培训courses ,帮助人们学习技术网络测试和用Java编写的Selenium WebDriver。Alan在SeleniumSimplified.com、EvilTester.com、JavaForTesters.com和CompendiumDev.co.uk上发布他的写作和培训视频。

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。
预定一个演示Alan Richardson拥有超过20年的专业IT经验,他曾作为一名开发人员,在测试层次的各个层面工作,从测试员到测试主管。在Secure Code Warrior ,他是开发者关系主管,直接与团队合作,以改善高质量安全代码的开发。Alan是四本书的作者,包括 "Dear Evil Tester "和 "Java For Testers"。艾伦还创建了在线培训courses ,帮助人们学习技术网络测试和用Java编写的Selenium WebDriver。Alan在SeleniumSimplified.com、EvilTester.com、JavaForTesters.com和CompendiumDev.co.uk上发布他的写作和培训视频。


自动添加一个私有构造函数与Sensei
在一个实用类中,当字段和方法都是静态的时候,没有明显的理由让我把它实例化。
例如,UtilityClass utility = new UtilityClass()。
下面的代码是一个实用程序类的简单实现。
public class UtilityClass {
public static final Boolean ULTIMATE_TRUTH = true;
public static boolean getTrue(){
return ULTIMATE_TRUTH;
}
}
这是静态分析工具可以发现的编码模式类型,但它们往往不提供修复问题的能力。
我可以使用Sensei 来识别编码模式,并自动生成一个私有构造函数,使我无法实例化该类。
搜索类
我将在公用事业类上添加一个新的配方,名为。
- 静态类:创建私有构造函数。

而最初,我将创建一个简单的匹配器来搜索一个类。
搜索。
class: {}
这将匹配任何类,这足以让我开始写一个快速修复。一旦我有了一个有效的快速修复方法,我将改进搜索,使其在更有可能出现需要私有构造函数的类时突出显示。

快速修复
对于快速修复,我将希望生成一个私有构造函数。
在示例类中,这将看起来像。
Private UtilityClass(){}。
为了将上述代码添加到我的类中,我的快速修复将添加一个方法,而该方法的名称将是一个使用类名的Mustache模板。
可用的修复方法。
- name: "add private constructor"
actions:
- addMethod:
method: "private {{{ name }}}(){}"
在GUI编辑器中,我使用显示变量来创建小胡子模板,然后编辑字段,添加私有修饰符、大括号和小括号,使其在语法上正确。

现在,这将允许我在任何类中添加一个私有构造函数。
QuickFix的预览功能对我有帮助,因为我可以在编写Mustache模板时看到生成的代码。

现在我知道我可以解决这个问题了。我将细化搜索条件,在最合适的时候显示食谱。
搜索缺失的结构体
理想情况下,我不希望创建一个对每个类都标记错误的配方。因此,我将在搜索中添加一些额外的条件,以便我们只匹配那些没有构造函数的类。
搜索。
class:
without:
child:
method:
constructor: true
YAML与GUI略有不同。
在GUI中,我将其配置为寻找一个没有子方法的类,该方法是一个构造函数'yes'。我们在GUI中使用'yes'而不是'true',以使GUI更加人性化。

这个配方现在只对任何没有构造函数的类显示出来。
缩小搜索范围,寻找可能的肇事者
所以我可能想进一步寻找静态方法或字段的存在。
我寻找任何没有构造函数的类,它有所有公共静态字段或所有公共静态方法。
搜索。
class:
with:
anyOf:
- child:
method:
allOf:
- modifier:"public"
- 修改器。"static"
- child:
field:
allOf:
- modifier:"static"
- 修饰语:"static" "public"
without:
child:
method:
constructor: true
由于Sensei 是用来帮助我这个程序员在IDE中,而不是静态地分析代码和报告所有的错误,这个过滤器足以排除我的代码库中的大多数类,在这些类中我可能有充分的理由拥有一个默认的公共构造函数。
在一些项目中,这可能会走得太远,因为实用类可能有私有方法,所以我可能会选择寻找 "任何 "公共静态方法的存在,而不是 "所有"。
- 子项:
领域:
anyOf:
- 修饰语。"static"
- 修改器。"公共"
提示
Sensei 不是用来取代静态分析工具的。Sensei 可以增强静态分析工具,以解决与你的编码过程或技术有关的常见问题。通过复制足够的匹配来突出一个问题,并通过生成快速修复代码来支持开发过程。
我想做的是创造一个足够简单的配方,包括我需要的所有情况,但要对它进行过滤,以便它不会在每个班级都被推荐。
在研究配方时,我试图降低它们的风险,在这种情况下,我不确定是否可以创建私有构造函数,所以我先创建了QuickFix。然后重构了搜索条件,使其更加具体。
有时在研究食谱时,我不确定如何进行搜索,所以我先在这方面下功夫。
我发现当我逐步建立配方时,在重构QuickFix和搜索之间切换,更容易创建配方。
---
你可以使用 "Preferences\ Plugins"(Mac)或 "Settings\ Plugins"(Windows)从IntelliJ内部安装Sensei ,然后只需搜索 "sensei secure code"
这方面的源代码和配方可以在Secure Code Warrior GitHub账户的`sensei-blog-examples`仓库中找到,在`pojoexamples`模块中。
https://github.com/securecodewarrior/sensei-blog-examples

自动添加一个私有构造函数与Sensei
在一个实用类中,当字段和方法都是静态的时候,没有明显的理由让我把它实例化。
例如,UtilityClass utility = new UtilityClass()。
下面的代码是一个实用程序类的简单实现。
public class UtilityClass {
public static final Boolean ULTIMATE_TRUTH = true;
public static boolean getTrue(){
return ULTIMATE_TRUTH;
}
}
这是静态分析工具可以发现的编码模式类型,但它们往往不提供修复问题的能力。
我可以使用Sensei 来识别编码模式,并自动生成一个私有构造函数,使我无法实例化该类。
搜索类
我将在公用事业类上添加一个新的配方,名为。
- 静态类:创建私有构造函数。

而最初,我将创建一个简单的匹配器来搜索一个类。
搜索。
class: {}
这将匹配任何类,这足以让我开始写一个快速修复。一旦我有了一个有效的快速修复方法,我将改进搜索,使其在更有可能出现需要私有构造函数的类时突出显示。

快速修复
对于快速修复,我将希望生成一个私有构造函数。
在示例类中,这将看起来像。
Private UtilityClass(){}。
为了将上述代码添加到我的类中,我的快速修复将添加一个方法,而该方法的名称将是一个使用类名的Mustache模板。
可用的修复方法。
- name: "add private constructor"
actions:
- addMethod:
method: "private {{{ name }}}(){}"
在GUI编辑器中,我使用显示变量来创建小胡子模板,然后编辑字段,添加私有修饰符、大括号和小括号,使其在语法上正确。

现在,这将允许我在任何类中添加一个私有构造函数。
QuickFix的预览功能对我有帮助,因为我可以在编写Mustache模板时看到生成的代码。

现在我知道我可以解决这个问题了。我将细化搜索条件,在最合适的时候显示食谱。
搜索缺失的结构体
理想情况下,我不希望创建一个对每个类都标记错误的配方。因此,我将在搜索中添加一些额外的条件,以便我们只匹配那些没有构造函数的类。
搜索。
class:
without:
child:
method:
constructor: true
YAML与GUI略有不同。
在GUI中,我将其配置为寻找一个没有子方法的类,该方法是一个构造函数'yes'。我们在GUI中使用'yes'而不是'true',以使GUI更加人性化。

这个配方现在只对任何没有构造函数的类显示出来。
缩小搜索范围,寻找可能的肇事者
所以我可能想进一步寻找静态方法或字段的存在。
我寻找任何没有构造函数的类,它有所有公共静态字段或所有公共静态方法。
搜索。
class:
with:
anyOf:
- child:
method:
allOf:
- modifier:"public"
- 修改器。"static"
- child:
field:
allOf:
- modifier:"static"
- 修饰语:"static" "public"
without:
child:
method:
constructor: true
由于Sensei 是用来帮助我这个程序员在IDE中,而不是静态地分析代码和报告所有的错误,这个过滤器足以排除我的代码库中的大多数类,在这些类中我可能有充分的理由拥有一个默认的公共构造函数。
在一些项目中,这可能会走得太远,因为实用类可能有私有方法,所以我可能会选择寻找 "任何 "公共静态方法的存在,而不是 "所有"。
- 子项:
领域:
anyOf:
- 修饰语。"static"
- 修改器。"公共"
提示
Sensei 不是用来取代静态分析工具的。Sensei 可以增强静态分析工具,以解决与你的编码过程或技术有关的常见问题。通过复制足够的匹配来突出一个问题,并通过生成快速修复代码来支持开发过程。
我想做的是创造一个足够简单的配方,包括我需要的所有情况,但要对它进行过滤,以便它不会在每个班级都被推荐。
在研究配方时,我试图降低它们的风险,在这种情况下,我不确定是否可以创建私有构造函数,所以我先创建了QuickFix。然后重构了搜索条件,使其更加具体。
有时在研究食谱时,我不确定如何进行搜索,所以我先在这方面下功夫。
我发现当我逐步建立配方时,在重构QuickFix和搜索之间切换,更容易创建配方。
---
你可以使用 "Preferences\ Plugins"(Mac)或 "Settings\ Plugins"(Windows)从IntelliJ内部安装Sensei ,然后只需搜索 "sensei secure code"
这方面的源代码和配方可以在Secure Code Warrior GitHub账户的`sensei-blog-examples`仓库中找到,在`pojoexamples`模块中。
https://github.com/securecodewarrior/sensei-blog-examples

点击下面的链接,下载本资料的 PDF 文件。
Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。
查看报告预定一个演示Alan Richardson拥有超过20年的专业IT经验,他曾作为一名开发人员,在测试层次的各个层面工作,从测试员到测试主管。在Secure Code Warrior ,他是开发者关系主管,直接与团队合作,以改善高质量安全代码的开发。Alan是四本书的作者,包括 "Dear Evil Tester "和 "Java For Testers"。艾伦还创建了在线培训courses ,帮助人们学习技术网络测试和用Java编写的Selenium WebDriver。Alan在SeleniumSimplified.com、EvilTester.com、JavaForTesters.com和CompendiumDev.co.uk上发布他的写作和培训视频。
自动添加一个私有构造函数与Sensei
在一个实用类中,当字段和方法都是静态的时候,没有明显的理由让我把它实例化。
例如,UtilityClass utility = new UtilityClass()。
下面的代码是一个实用程序类的简单实现。
public class UtilityClass {
public static final Boolean ULTIMATE_TRUTH = true;
public static boolean getTrue(){
return ULTIMATE_TRUTH;
}
}
这是静态分析工具可以发现的编码模式类型,但它们往往不提供修复问题的能力。
我可以使用Sensei 来识别编码模式,并自动生成一个私有构造函数,使我无法实例化该类。
搜索类
我将在公用事业类上添加一个新的配方,名为。
- 静态类:创建私有构造函数。

而最初,我将创建一个简单的匹配器来搜索一个类。
搜索。
class: {}
这将匹配任何类,这足以让我开始写一个快速修复。一旦我有了一个有效的快速修复方法,我将改进搜索,使其在更有可能出现需要私有构造函数的类时突出显示。

快速修复
对于快速修复,我将希望生成一个私有构造函数。
在示例类中,这将看起来像。
Private UtilityClass(){}。
为了将上述代码添加到我的类中,我的快速修复将添加一个方法,而该方法的名称将是一个使用类名的Mustache模板。
可用的修复方法。
- name: "add private constructor"
actions:
- addMethod:
method: "private {{{ name }}}(){}"
在GUI编辑器中,我使用显示变量来创建小胡子模板,然后编辑字段,添加私有修饰符、大括号和小括号,使其在语法上正确。

现在,这将允许我在任何类中添加一个私有构造函数。
QuickFix的预览功能对我有帮助,因为我可以在编写Mustache模板时看到生成的代码。

现在我知道我可以解决这个问题了。我将细化搜索条件,在最合适的时候显示食谱。
搜索缺失的结构体
理想情况下,我不希望创建一个对每个类都标记错误的配方。因此,我将在搜索中添加一些额外的条件,以便我们只匹配那些没有构造函数的类。
搜索。
class:
without:
child:
method:
constructor: true
YAML与GUI略有不同。
在GUI中,我将其配置为寻找一个没有子方法的类,该方法是一个构造函数'yes'。我们在GUI中使用'yes'而不是'true',以使GUI更加人性化。

这个配方现在只对任何没有构造函数的类显示出来。
缩小搜索范围,寻找可能的肇事者
所以我可能想进一步寻找静态方法或字段的存在。
我寻找任何没有构造函数的类,它有所有公共静态字段或所有公共静态方法。
搜索。
class:
with:
anyOf:
- child:
method:
allOf:
- modifier:"public"
- 修改器。"static"
- child:
field:
allOf:
- modifier:"static"
- 修饰语:"static" "public"
without:
child:
method:
constructor: true
由于Sensei 是用来帮助我这个程序员在IDE中,而不是静态地分析代码和报告所有的错误,这个过滤器足以排除我的代码库中的大多数类,在这些类中我可能有充分的理由拥有一个默认的公共构造函数。
在一些项目中,这可能会走得太远,因为实用类可能有私有方法,所以我可能会选择寻找 "任何 "公共静态方法的存在,而不是 "所有"。
- 子项:
领域:
anyOf:
- 修饰语。"static"
- 修改器。"公共"
提示
Sensei 不是用来取代静态分析工具的。Sensei 可以增强静态分析工具,以解决与你的编码过程或技术有关的常见问题。通过复制足够的匹配来突出一个问题,并通过生成快速修复代码来支持开发过程。
我想做的是创造一个足够简单的配方,包括我需要的所有情况,但要对它进行过滤,以便它不会在每个班级都被推荐。
在研究配方时,我试图降低它们的风险,在这种情况下,我不确定是否可以创建私有构造函数,所以我先创建了QuickFix。然后重构了搜索条件,使其更加具体。
有时在研究食谱时,我不确定如何进行搜索,所以我先在这方面下功夫。
我发现当我逐步建立配方时,在重构QuickFix和搜索之间切换,更容易创建配方。
---
你可以使用 "Preferences\ Plugins"(Mac)或 "Settings\ Plugins"(Windows)从IntelliJ内部安装Sensei ,然后只需搜索 "sensei secure code"
这方面的源代码和配方可以在Secure Code Warrior GitHub账户的`sensei-blog-examples`仓库中找到,在`pojoexamples`模块中。
https://github.com/securecodewarrior/sensei-blog-examples
目录
Alan Richardson拥有超过20年的专业IT经验,他曾作为一名开发人员,在测试层次的各个层面工作,从测试员到测试主管。在Secure Code Warrior ,他是开发者关系主管,直接与团队合作,以改善高质量安全代码的开发。Alan是四本书的作者,包括 "Dear Evil Tester "和 "Java For Testers"。艾伦还创建了在线培训courses ,帮助人们学习技术网络测试和用Java编写的Selenium WebDriver。Alan在SeleniumSimplified.com、EvilTester.com、JavaForTesters.com和CompendiumDev.co.uk上发布他的写作和培训视频。

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。
预定一个演示下载资源
安全技能基准测试:简化企业安全设计
寻找有关 "按设计确保安全 "计划成功与否的有意义的数据是众所周知的难题。首席信息安全官(CISO)在试图证明投资回报率(ROI)和安全计划活动在人员和公司层面上的商业价值时,往往会面临挑战。更不用说,企业要深入了解自己的组织是如何以当前的行业标准为基准的,更是难上加难。美国总统的《国家网络安全战略》向利益相关者提出了 "通过设计实现安全和弹性 "的挑战。让 "按设计保证安全 "计划发挥作用的关键不仅在于为开发人员提供确保代码安全的技能,还在于向监管机构保证这些技能已经到位。在本演讲中,我们将分享大量定性和定量数据,这些数据来自多个主要来源,包括从超过 25 万名开发人员那里收集的内部数据点、数据驱动的客户洞察力以及公共研究。利用这些数据点的汇总,我们旨在传达一个跨多个垂直领域的 "按设计保证安全 "计划的现状。报告详细阐述了这一领域目前未得到充分利用的原因、成功的技能提升计划对降低网络安全风险的重大影响,以及消除代码库中各类漏洞的潜力。