自动添加一个私有构造函数与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或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。
预定一个演示下载