0
매개 변수의 순서를 유지하면서 메서드 매개 변수에 대해 Null 가드 검사를 삽입하는 코드 수정을 작성했습니다.내 코드 수정으로 원하는 결과를 얻을 수 없습니다.
매개 변수 p3에 null 보호 기능을 추가하기 위해 코드 수정을 사용한다고 가정 해 보겠습니다. 이것은 다음 결과 여야합니다.
Public Sub ex(p0 As Example, p1 As Example, p2 As Integer, p3 As Example) ' Comment 1
If p0 Is Nothing Then Throw New System.ArgumentNullException("p0") 'comment
If p3 Is Nothing Then Throw New System.ArgumentNullException("p3")
Dim a = 0
End Sub
하지만 실제로 얻을 것은
Public Sub ex(p0 As Example, p1 As Example, p2 As Integer, p3 As Example) ' Comment 1
If p0 Is Nothing Then Throw New System.ArgumentNullException("p0") If p3 Is Nothing Then Throw New System.ArgumentNullException("p3") 'comment
Dim a = 0
End Sub
또는
Public Sub ex(p0 As Example, p1 As Example, p2 As Integer, p3 As Example) ' Comment 1
If p0 Is Nothing Then Throw New System.ArgumentNullException("p0")
If p3 Is Nothing Then Throw New System.ArgumentNullException("p3") 'comment
Dim a = 0
End Sub
입니다
GitHub의에서 찾을 수 있습니다 사용되는 코드 (repo) *이 사용되는 알고리즘 가능성이 쓰레기는하지만, 그것은 작동 . *
아무리 노력해도 올바른 결과를 얻지 못하는 것 같습니다.
- 모든 경비는
- 모든 경비는 별도의 줄에 결국하지만 댓글이 삭제 같은 줄에 끝/지난 가드의 끝으로 이동.
원하는 결과를 얻지 못한 사람이 있습니까?
나는 퀴즈는 각 문에 보존 할 수 있지만, 그렇지 않은 기대
Dim ifStatements = method.Statements.Where(Function(s) (TypeOf s Is MultiLineIfBlockSyntax)
OrElse (TypeOf s Is SingleLineIfStatementSyntax))
Dim ExistingGuards = ifStatements.Where(Function(s)
If TypeOf s Is SingleLineIfStatementSyntax Then
Dim singleIF = DirectCast(s, SingleLineIfStatementSyntax)
Dim isExpr = TryCast(singleIF.Condition, BinaryExpressionSyntax)
Return CheckIfCondition(isExpr)
ElseIf TypeOf s Is MultiLineIfBlockSyntax Then
Dim multiIF = DirectCast(s, MultiLineIfBlockSyntax)
Dim isExpr = TryCast(multiIF.IfStatement.Condition, BinaryExpressionSyntax)
Return CheckIfCondition(isExpr)
Else
Return False
End If
End Function).ToList()
추가.
). 추가 정보를보십시오. –
LINQ 쿼리의 결과를 살펴보면 .Node.Green을 찾을 수 있으며 코멘트 트리 비어가 있습니다. –