См. HOWTO: навигация по элементам кода файла из макроса Visual Studio .NET или надстройки
Возможно HOWTO: Вам будет интересно найти файлы решения из макроса Visual Studio .NET или надстройки .
Получить доступность функции легко. После первой статьи у вас есть объект CodeElement. Если он имеет тип CodeFunction, вы можете привести его к типу CodeFunction (или также к CodeFunction2). CodeFunction содержит много свойств, включая Access, который вам нужен. Я изменил ShowCodeElement из этой статьи, чтобы он отображал только функции, а также отображал их доступность:
Private Sub ShowCodeElement(ByVal objCodeElement As CodeElement)
Dim objCodeNamespace As EnvDTE.CodeNamespace
Dim objCodeType As EnvDTE.CodeType
Dim objCodeFunction As EnvDTE.CodeFunction
If TypeOf objCodeElement Is EnvDTE.CodeNamespace Then
objCodeNamespace = CType(objCodeElement, EnvDTE.CodeNamespace)
ShowCodeElements(objCodeNamespace.Members)
ElseIf TypeOf objCodeElement Is EnvDTE.CodeType Then
objCodeType = CType(objCodeElement, EnvDTE.CodeType)
ShowCodeElements(objCodeType.Members)
ElseIf TypeOf objCodeElement Is EnvDTE.CodeFunction Then
Try
Dim msg As String = objCodeElement.FullName & vbCrLf
Dim cd As EnvDTE.CodeFunction = DirectCast(objCodeElement, CodeFunction)
Select Case cd.Access
Case vsCMAccess.vsCMAccessDefault
msg &= "Not explicitly specified. It is Public in VB and private in C#."
Case Else
msg &= cd.Access.ToString
End Select
MsgBox(msg)
Catch ex As System.Exception
' Ignore
End Try
End If
End Sub
Измените его и затем выполните макрос ShowFileCodeModel.