Mi proyecto está dirigido a un dispositivo incrustado de bajo costo y bajo recurso. Depende de una base de código Python relativamente grande y extenso, de la cual mi uso de sus API es bastante específico.Uso de la herramienta de cobertura de código Python para comprender y reducir el código fuente de una biblioteca grande
Estoy dispuesto a podar el código de esta biblioteca de nuevo a su mínima expresión, mediante la ejecución de mi banco de pruebas dentro de las herramientas de cobertura como de Ned Batchelder cobertura o hoja de parra, a continuación, las secuencias de comandos eliminación de código no utilizado dentro del varios módulos/archivos. Esto ayudará no solo a comprender las partes internas de las bibliotecas, sino también a facilitar la escritura de los parches. Ned en realidad se refiere al uso de herramientas de cobertura para "codificar el código complejo" en una de sus conversaciones en línea.
Mi pregunta a la comunidad SO es si la gente tiene experiencia de usar herramientas de cobertura de esta manera que no les importaría compartir? ¿Cuáles son los peligros si es que hay alguno? ¿Es la herramienta de cobertura una buena elección? ¿O sería mejor invertir mi tiempo con figleaf?
El final del juego es ser capaz de generar automáticamente un nuevo árbol de código fuente para la biblioteca, basado en el árbol original, pero sólo con el código de realmente utilizado cuando corro nosetests.
Si alguien ha desarrollado una herramienta que hace un trabajo similar para sus aplicaciones y bibliotecas de Python, sería fantástico obtener una línea de base desde la cual comenzar el desarrollo.
Con suerte mi descripción tiene sentido para los lectores ...
Necesita tener un conjunto realmente exhaustivo de pruebas, o corre el riesgo de eliminar la única función que sus pruebas no llamaron, pero que es necesaria en algunas circunstancias exóticas pero reales. Me preocuparía * mucho * acerca de esto, porque es muy difícil obtener una cobertura de prueba del 100%. ¿Qué tan seguro está de que sus pruebas sean exhaustivas? Sistema integrado: ¿está probando "falta de memoria"? –
.... Ned puede haber hecho referencia a la cobertura de prueba para "entender", por ejemplo, encontrar el código relacionado con una pieza específica de funcionalidad, y eso está bien, pero no es lo mismo que encontrar * todas * piezas de funcionalidad, que código. –