Sigo flipando con nant.
Viendo las tareas de nant.contrib me sorprendio encontrar codestats
Y he decidio ampliar la tareas para que cuente las clases publicas que hay en un grupo de assemblies dado.
Como siempre los interesados pueden descargarse una temprana version de mi
wokspace en GotDotNet
Aún no sé muy bien de qué va esto del NAnt, a ver si estos agobios me dejan respirar un poco. Mientras, ahí va un trozo de código (macro de VS.NET) que creo no va desencaminado con esto. Lo que hace es destripar el código fuente para identificar sus clases, métodos, variables, etc (Primer paso para hacer un add-in de QA, por ejemplo). Es versión 0.0.0.0.0.0.0.1 ;-) pero funciona. Que me perdonen los de C#, pero mi proyecto actual es en VB.NET. Salu2 a to2
Imports EnvDTE
Imports System.Diagnostics
Public Module CodeWatcher
Public Sub ScanAllProjects()
Dim oProject As Project
Dim oProjectItem As ProjectItem
Dim oCodeModel As CodeModel
Dim oCodeElement As CodeElement
For Each oProject In DTE.Solution.Projects
Debug.WriteLine("-------------------------------------------------------------")
Debug.WriteLine("PROJECT: " & oProject.Name)
Debug.WriteLine("-------------------------------------------------------------")
'For Each oProjectItem In oProject.ProjectItems
' Debug.WriteLine("FILE: " & oProjectItem.Name)
' oCodeModel = oProjectItem.FileCodeModel
'Next
oCodeModel = oProject.CodeModel
' Look for all the namespaces and classes
For Each oCodeElement In oCodeModel.CodeElements
ProcessCodeElement(oCodeElement)
Next
Next
End Sub
Private Sub ProcessCodeElement(ByVal oCodeElement As CodeElement)
Dim oCodeElementChild As CodeElement
Dim oCodeFunction As CodeFunction
Dim oEditPoint As EditPoint
Dim sSourceCodeFunction As String
Dim bProcessChildren As Boolean
Select Case oCodeElement.Kind
Case vsCMElement.vsCMElementClass
Debug.WriteLine("CLASS: " & oCodeElement.Name & ". NumLines=" & (oCodeElement.EndPoint.Line - oCodeElement.StartPoint.Line + 1))
bProcessChildren = True
Case vsCMElement.vsCMElementModule
Debug.WriteLine("MODULE: " & oCodeElement.Name)
bProcessChildren = True
Case vsCMElement.vsCMElementFunction
Debug.WriteLine("Function: " & oCodeElement.Name & ". NumLines=" & (oCodeElement.EndPoint.Line - oCodeElement.StartPoint.Line + 1))
oCodeFunction = CType(oCodeElement, CodeFunction)
oEditPoint = oCodeFunction.StartPoint.CreateEditPoint()
sSourceCodeFunction = oEditPoint.GetText(oCodeFunction.EndPoint)
Debug.WriteLine(sSourceCodeFunction)
bProcessChildren = False
Debug.WriteLine("Function Access: " & oCodeFunction.Access.ToString)
Debug.WriteLine("Function FunctionKind: " & oCodeFunction.FunctionKind.ToString)
Debug.WriteLine("Function IsOverloaded: " & oCodeFunction.IsOverloaded)
Debug.WriteLine("Function IsShared: " & oCodeFunction.IsShared)
Debug.WriteLine("Function MustImplement: " & oCodeFunction.MustImplement)
Debug.WriteLine("Function Prototype: " & oCodeFunction.Prototype)
Debug.WriteLine("Function ReturnType: " & oCodeFunction.Type.AsString)
Debug.WriteLine("Function Number of parameters: " & oCodeFunction.Parameters.Count)
Case vsCMElement.vsCMElementEvent
Debug.WriteLine("Event: " & oCodeElement.Name & ". NumLines=" & (oCodeElement.EndPoint.Line - oCodeElement.StartPoint.Line + 1))
bProcessChildren = False
Case vsCMElement.vsCMElementEnum
Debug.WriteLine("Enum: " & oCodeElement.Name & ". Line=" & oCodeElement.StartPoint.Line)
bProcessChildren = True
Case vsCMElement.vsCMElementVariable
Debug.WriteLine("Variable: " & oCodeElement.Name & ". Line=" & oCodeElement.StartPoint.Line)
bProcessChildren = False
End Select
If bProcessChildren Then
For Each oCodeElementChild In oCodeElement.Members ' Not present in intellisense without casting
ProcessCodeElement(oCodeElementChild)
Next
End If
End Sub
End Module
Posted by: Emilio on 30 de Octubre 2003 a las 03:38 PMMuchas Gracias Emilio, ya podria la gente colaborar como tu.
NAnt es un sistema para automatizar builds, y muchas cosas más.
La idea es sacar las métricas al generar las builds, y asi ver la evolución del proyecto.
Si te interesa pasate por mi Workspace de GotDotNet...
Posted by: Rido on 2 de Noviembre 2003 a las 01:00 AMVolo, non valeo - I am willing but unable
Sequens mirabitur aetas - The following age will be amazed
Credite amori vera dicenti - Believe love speaking the truth. (St. Jerome)
Magnas inter oper inops - A pauper in the midst of wealth. (Horace)