For Each 循环 VB.NET 中的 Fortify 扫描 Null 取消引用问题
Fortify scan Null Dereference issue at For Each loop VB.NET
我们的应用程序是用 VB.Net 编写的。
在 HP Fortify 中扫描我们的应用程序时,Null Dereference 问题指向了几个页面中唯一的 For Each ... Next 循环。
Null Reference 仅在 For each 循环中显示的原因可能是什么。在应用程序中使用 For Each 循环的所有地方,空解除引用都指向 For Each 循环的 "Next"。
请帮助解决此扫描问题。
下面是我们应用程序的示例代码片段。
If Request.QueryString("mode") IsNot Nothing Then
mode = Request.QueryString("mode")
End If
.
.
.
For Each col In gridTemp.Columns
Select Case col.HeaderText
Case "ID"
col.Visible = IIf(mode = "Admin", True, False)
Case "Name"
col.Visible = IIf(mode = "Admin", True, False)
Case "Balance"
col.Visible = IIf(mode = "Admin", False, True)
Case "Dues"
col.Visible = IIf(mode = "Admin", True, False)
Case "Contact"
col.Visible = IIf(mode = "Admin", False, True)
End Select
Next
我们发现解决这个问题的唯一方法是将 for each 循环转换为 for 循环。在这种情况下,请尝试使用
For I as Integer = 0 to gridTemp.Columns.Count - 1
Dim col as Column(i)
Select Case col.HeaderText
Case "ID"
col.Visible = IIf(mode = "Admin", True, False)
Case "Name"
col.Visible = IIf(mode = "Admin", True, False)
Case "Balance"
col.Visible = IIf(mode = "Admin", False, True)
Case "Dues"
col.Visible = IIf(mode = "Admin", True, False)
Case "Contact"
col.Visible = IIf(mode = "Admin", False, True)
End Select
Next
我同意,但不幸的是,这是我坚持使用的工具。另一种选择是将其标记为 "not an issue" 并解释为什么这不是问题。
我们的应用程序是用 VB.Net 编写的。 在 HP Fortify 中扫描我们的应用程序时,Null Dereference 问题指向了几个页面中唯一的 For Each ... Next 循环。 Null Reference 仅在 For each 循环中显示的原因可能是什么。在应用程序中使用 For Each 循环的所有地方,空解除引用都指向 For Each 循环的 "Next"。 请帮助解决此扫描问题。 下面是我们应用程序的示例代码片段。
If Request.QueryString("mode") IsNot Nothing Then
mode = Request.QueryString("mode")
End If
.
.
.
For Each col In gridTemp.Columns
Select Case col.HeaderText
Case "ID"
col.Visible = IIf(mode = "Admin", True, False)
Case "Name"
col.Visible = IIf(mode = "Admin", True, False)
Case "Balance"
col.Visible = IIf(mode = "Admin", False, True)
Case "Dues"
col.Visible = IIf(mode = "Admin", True, False)
Case "Contact"
col.Visible = IIf(mode = "Admin", False, True)
End Select
Next
我们发现解决这个问题的唯一方法是将 for each 循环转换为 for 循环。在这种情况下,请尝试使用
For I as Integer = 0 to gridTemp.Columns.Count - 1
Dim col as Column(i)
Select Case col.HeaderText
Case "ID"
col.Visible = IIf(mode = "Admin", True, False)
Case "Name"
col.Visible = IIf(mode = "Admin", True, False)
Case "Balance"
col.Visible = IIf(mode = "Admin", False, True)
Case "Dues"
col.Visible = IIf(mode = "Admin", True, False)
Case "Contact"
col.Visible = IIf(mode = "Admin", False, True)
End Select
Next
我同意,但不幸的是,这是我坚持使用的工具。另一种选择是将其标记为 "not an issue" 并解释为什么这不是问题。