如何解决风险未发布的资源:通过强化的非托管对象(unmanaged_object)

时间:2014-02-25 07:28:02

标签: c# fortify

现在,我有一个简单的C#项目,通过强化扫描报告存在安全风险。该项目基于.NET Windows表单应用程序。此风险的名称为Unreleased Resource: Unmanaged Object(unmanaged_object)

例如,如果我想通过将工具箱上的控制器图形拖放到表单设计中来构造标签控制器。然后修改字体大小会自动更改Form1.Designer中的代码。例如,它将生成以下代码:

this.label1.font = new System.Drawing.Font(...)

关键是我们通过构造函数System.Drawing.Font(...)声明一个Font对象。但是我们不处理这个对象?那么,我们如何避免这种风险呢?

p.s。,如果我们更改Form1.Designer文件中visual studio生成的区域的代码。然后我们甚至不能再编辑表单〜(因为控制器的任何设置(例如,更改底部的foreColor属性)将改变文件的这一部分中的代码)。

另外,我们不希望在初始化方法中创建每个控制器。有没有人有办法解决这个问题?非常感谢!!

1 个答案:

答案 0 :(得分:0)

你可以打电话:

 this.label1.font.Dispose();

在您的表单的FormClosed事件中明确表示。您必须为您在表单中创建的每个Font对象执行此操作。

虽然不是很漂亮......通常更容易让GC最终确定(除非你制作大量的字体对象),但Fortify明确规定了明确处理的规则。