2010-02-07 12 views
5

Existen muchas herramientas que podemos usar para mostrar las dependencias entre módulos, archivos de código fuente, clases o funciones, etc. Pero no parece haber ninguna herramienta para analizar las dependencias entre las variables. Dado un gráfico de dependencia de variables sería útil para comprender y refactorizar el código.¿Hay alguna herramienta que pueda analizar las dependencias entre variables en los programas de C#?

Por ejemplo, si la variable B sólo se utiliza para calcular el valor de la variable C de la siguiente manera:

b = a; 
.... 
c = b + 2; 

tal vez podríamos eliminar la variable b para hacer el código más legible:

.... 
c = a + 2; 

Este tipo de refrigerio puede ser difícil si el código es muy complejo o tiene muchos malos olores.

¿Hay alguna herramienta que pueda analizar las dependencias entre variables en C# u otros lenguajes de programación?

+1

Por "variable" ¿quiere decir "variable local", específicamente, o te refieres parámetro local, formal, matriz elemento, campo y puntero desreferenciado? ¿Le preocupan las variables externas de lambdas? Parámetros de Lambda? ¿Locales en lambdas? ¿Localizadores erguidos en bloques de iterador? Analizando las relaciones entre ellos Las variables arbitrarias pueden ser bastante complicadas, mucho más complicadas que simplemente locales, especialmente cuando se considera el alias variable a través de los parámetros "ref". –

+0

Eric Lippert: cuantos más tipos de "variables" puedan analizarse, más fácil será el trabajo de refactorización del código. Descubrí que generalmente hay muchas dependencias complejas cuando trato de refactorizar el código heredado. – askalee

Respuesta

1

Resharper es una buena herramienta para analizar el código C#. Al menos le mostrará variables y variables sin usar que le asigna valor pero nunca las usa.

Si está considerando una refacturación seria de su código, podría escribir una prueba de unidad para estar más seguro de que no rompe algo.

1

El Phoenix Project en Microsoft Research ha habilitado algunas herramientas bastante interesantes. Una demostración que he visto muestra el resaltado de las dependencias de datos. De modo que podría colocar el cursor sobre 'c' en su ejemplo, y todas las expresiones que contribuyen a ese cálculo se destacarían. Era más una demostración de Fénix, que una herramienta de desarrollo en toda regla, pero fue muy bueno ver que se podía hacer. Phoenix es free download, por lo que puede ver qué tipo de aplicaciones de muestra están incluidas.

0

Consulte la discusión sobre cómo el DMS Software Reengineering Toolkit hace (controla y) el análisis de flujo de datos. Este es esencialmente el análisis de compilador clásico de los flujos de información, que incluye lo que se llama cadenas def-use. Las cadenas de uso muestran cómo un valor (una asignación específica) es consumido por otras partes del programa.

Estos flujos de información se calculan como estructuras de datos, por lo que son directamente fáciles de ver. (La página web muestra imágenes pero son arrojados resultados de gráficos alimentados a punto. Para hacer esto en una herramienta es más esfuerzo.

Hemos creado cortadoras de programas con esto, que muestran esta información en una interfaz de usuario. no están disponibles comercialmente todavía.

Grammatech hace que este tipo de máquinas de cortar programas para C y Ada, creo.

Cuestiones relacionadas