27 de Octubre 2003

QAMetrics

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

Posted by rido at 27 de Octubre 2003 a las 12:19 AM
Comments

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 PM

Muchas 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 AM

Volo, non valeo - I am willing but unable

Posted by: fotos de travestis on 9 de Julio 2004 a las 02:45 PM

Sequens mirabitur aetas - The following age will be amazed

Posted by: spankmans older women on 18 de Julio 2004 a las 01:10 PM

Credite amori vera dicenti - Believe love speaking the truth. (St. Jerome)

Posted by: free shemale hardcore pics on 5 de Agosto 2004 a las 01:36 PM

Magnas inter oper inops - A pauper in the midst of wealth. (Horace)

Posted by: no nonsense panty hose on 27 de Agosto 2004 a las 05:38 PM
Post a comment