Page 2 of 2

Re: Funciones no utilizadas, cuales y como saber?

PostPosted: Mon Feb 16, 2015 11:08 pm
by cnavarro
Yo he desarrollado en relacion a este tema
Aun faltan algunas pruebas y que funcione con todos los ficheros abiertos
[img=http://s1.postimg.org/3m9ko01p7/Title114.jpg]

Image

Re: Funciones no utilizadas, cuales y como saber?

PostPosted: Tue Feb 17, 2015 11:43 am
by Adolfo
Fantastico Cristobal...

Una razon mas para probar el fivedit.

Saludos

Re: Funciones no utilizadas, cuales y como saber?

PostPosted: Wed Feb 18, 2015 8:38 am
by hmpaquito
Sacar el nombre de las funciones del .map no es la mejor de las ideas, pudiendo sacarlas de la tabla de symbolos de (x)harbour.
¿ Alguien puede indicar como sacar los nombres de las funciones usadas ? A ser posible, que sea compatible harbour/ xharbour. Habria que ver que hacer con las funciones static... ademas de distinguir las que son, de momento las obviaria dado su "corto" alcance en el programa.

Re: Funciones no utilizadas, cuales y como saber?

PostPosted: Wed Feb 18, 2015 8:59 am
by hmpaquito
Esquema de aproximación:
Code: Select all  Expand view

CLASS TFunctionUse

   METHOD New()

   METHOD FunctionNameFromSymbol()     // Statics functions not included
   METHOD CreateFunctionList()                // Creates array function use

   METHOD SaveFunctionListToDbf()          // Save array function list to dbf


   DATA lSearchInPpo INIT .T                    // .F. for search in .prg
 
   DATA aFilesSearch                               // Search in files, or ...
   DATA aDirSearch                                 // Seach in directories

ENDCLASS

Re: Funciones no utilizadas, cuales y como saber?

PostPosted: Wed Feb 18, 2015 9:36 am
by cnavarro
hmpaquito wrote:Sacar el nombre de las funciones del .map no es la mejor de las ideas, pudiendo sacarlas de la tabla de symbolos de (x)harbour.
¿ Alguien puede indicar como sacar los nombres de las funciones usadas ? A ser posible, que sea compatible harbour/ xharbour. Habria que ver que hacer con las funciones static... ademas de distinguir las que son, de momento las obviaria dado su "corto" alcance en el programa.


"Largo" o "Corto" :D lo importante es saber si la hemos escrito y no la estamos usando, creo que es lo correcto, no?

Re: Funciones no utilizadas, cuales y como saber?

PostPosted: Wed Feb 18, 2015 10:12 am
by hmpaquito
sip :D

Re: Funciones no utilizadas, cuales y como saber?

PostPosted: Wed Feb 18, 2015 10:15 am
by cnavarro
El propio codigo de FivEdit de Antonio ya analiza el .PRG y extrae las funciones para mostrarlas en el ListBox derecho

Re: Funciones no utilizadas, cuales y como saber?

PostPosted: Wed Feb 18, 2015 10:39 am
by hmpaquito
Carlos,

Gracias por la apreciación, puede ser muy útil... ¿ como se comporta fivEdit ante estos cinco casos ?

Code: Select all  Expand view
#ifdef __NO_USADO__
   FUNCTION FunX(); RETURN NIL
#endif

/*
   FUNCTION FunX(); RETURN NIL
*/


// FUNCTION FunX(); RETURN NIL

* FUNCTION FunX(); RETURN NIL

#Define FUN_DEF FunX()
FUNCTION FUN_DEF; RETURN NIL

 

Saludos

Re: Funciones no utilizadas, cuales y como saber?

PostPosted: Wed Feb 18, 2015 10:46 am
by cnavarro
Hola, soy Cristobal, aunque tampoco me hubiese importado llamarme Carlos :D :D :D :)

Deberias probarlo, y ver si carga en la lista las funciones en los posibles casos que aportas
A partir de ahi, se podrian añadir nuevas opciones que no estuviesen contempladas
Yo creo que salvo la funcion dentro del #IF..., los demas casos están contemplados, pero ....

Re: Funciones no utilizadas, cuales y como saber?

PostPosted: Wed Feb 18, 2015 11:00 am
by hmpaquito
Cristóbal :D

Siento haber confundido tu nombre...

Me resulta curiosa una cosa... no es lo mismo el escenario de analizar un prg en frio (sólo fuente) que en caliente, estando el programa ejecutándose...
En caliente tenemos la tabla de symbolos que (x)harbour nos "ha hecho el favor" de construir para nosotros y que ya lleva todo el tema sintáctico solucionado. Amén de que sólo contiene la funciones que nuestro programa a realmente incorporado de los .prg que realmente se han enlazado.

Es verdad que (sólo en :cry: ) Harbour el preprocesador ha adquirido potencia inusitada que podría ser "usable" para labores "sintácticas" :D

Ya pregunté más arriba a los compis para ver si alguien ofrecía una forma (x)harbour de sacara las funciones (incluso static) de la tabla de symbolos.

Evidentemente si la rutina de fivEdit no contempla el primer escenario, veo más lógico usar la tabla de symbolos si esta da la información necesaria {funcion, [modulo], static si/no}

Saludos.

PD. Con todo lo dicho anteriormente, una funcion FunctionUse() deberia ser usada desde "dentro" del programa que se quiere analizar.

Re: Funciones no utilizadas, cuales y como saber?

PostPosted: Wed Feb 18, 2015 11:16 am
by cnavarro
Si, la potencia de Harbour es impresionante y solo "rasco" un poquito en su uso
El enfoque habitual de los desarrollos hacia las bases de datos nos hace dejar un poco de lado muchas herramientas que podemos utilizar o por lo menos conocer en profundidad
Tu comentario hacia el uso del preprocesador y su implicacion en el tema que nos ocupa, habria que tenerlo en cuenta tambien ("con tiempo y una caña........" :D )
Funciones como esta, a modo de curiosidad:
Code: Select all  Expand view


Function HCadFunction( nOp )
     Local nSymbols
     Local nFunctions
     Local n
     Local aFunc   := {}
     Local oWnd
     Local oBrw
     Local cCad    := ""
     DEFAULT nOp   := 0
     nSymbols      := __dynsCount()
     nFunctions    := 0

     for n := 1 to nSymbols
        if __dynsIsFun( n )
           AAdd( aFunc, __dynsGetName( n ) + "()" )
           cCad := __dynsGetName( n ) + " "
           nFunctions++
        else

        endif
     next

return IF( Empty( nOp ), cCad, aFunc )
 


nos quitarian mucho trabajo, y es solo un minimo ejemplo