2008-10-25 19 views
5

Dada una API grande (y en particular, las bibliotecas estándar Java o J2EE), ¿hay alguna herramienta o motor de búsqueda u otro recurso que pueda decirme qué métodos, clases o incluso paquetes suelen usar las personas en general? Anoto (vea a continuación) las API y me gustaría centrar mi atención en las áreas populares. Lo único que se me ocurre es usar el código de Google con diferentes nombres de métodos, pero eso es, por supuesto, tedioso.¿Hay alguna estadística sobre las funciones de API de Java usadas con más frecuencia?

Algunos antecedentes (si alguien está interesado): Como parte de mi investigación de doctorado he desarrollado un tool que permite a los usuarios resaltar "directivas" importantes en la documentación del método (propias o en API existentes) y luego empuja estas anotaciones a los usuarios para aumentar las posibilidades de que se den cuenta de ello. Nuestros estudios de laboratorio muestran que esto tiene potencial, pero para que la gente lo use en el campo, tengo que proporcionar "corpúsculos" de API anotadas y estoy tratando de priorizar qué bibliotecas anotar.

Respuesta

3

No sabría si tales estadísticas son factibles, pero creo que una apuesta bastante segura sería comenzar con los conceptos básicos y algunas bibliotecas famosas de terceros. Por ejemplo:

cuanto a terceros

+0

Este es un buen punto de partida. Agregaría JDBC a la lista. –

+0

Sí. Sin embargo, no mucha gente usa API de red directamente. Swing es probablemente el menos utilizado. Properties es otra API muy común que he visto junto con REsource Bundles. – anjanb

+0

Casi creo que algunas funciones de cadena ocurren más que colecciones. – Axeman

1

Esta escritura del golpe "simple" contará clases más usadas en su código base del proyecto actual.

 
find . -name "*.java" | xargs cat | grep "^import java" | sort | uniq -c | sort -nr | head -100 
+1

Lo cual obviamente ignora el paquete java.lang. Tampoco considera la frecuencia de uso. Un buen intento (sin juego de palabras) – questzen

0

Parece que sería posible automatizar un proceso en el que una lista de paquetes J2SE o J2EE podría presentarse al Koders.com, Google Code o de otra fuente abierta repositorio de búsqueda de código, contar los resultados por paquete y ordenar por el más popular.

Tenga en cuenta que esto no le dará resultados absolutamente completos, ya que java.lang (o cualquier otro paquete/clase que se importe implícitamente) no aparecerá en esa búsqueda.

No creo que exista una herramienta o publicador de esta información, aunque podría estar equivocado.

Otra posibilidad es escoger una serie de proyectos 'representativos', descargarlos y utilizar una herramienta de análisis de la dependencia, como JDepend, para generar informes de dependencia y al proceso ellos para obtener un conjunto de paquetes/clases en uso.

0

Supongo que quiere clasificarlos en función de la frecuencia de uso. Le sugiero que descargue algunos proyectos Java de código abierto, ejecute una herramienta de análisis estático.Luego, en el mismo conjunto ejecute un generador de perfiles de memoria y, finalmente, extrapolar estas estadísticas

0

Puede usar la métrica MethodRank para eso, para detectar los métodos más utilizados, las clases dentro de algunos proyectos de código abierto.

Puede obtener la versión de prueba de JavaDepend, analizar algunos proyectos populares de código abierto de Java y ejecutar algunas solicitudes CQL (como SQL) para obtener todos los métodos, clases y campos más utilizados dentro de estos proyectos.

PD: La versión de prueba es suficiente para su necesidad, no hay límite de tiempo.

Cuestiones relacionadas