Me gustaría encontrar funciones no utilizadas en una base de código, incluso en unidades de compilación. Estoy usando gcc como mi compilador.¿Hay alguna manera de obtener una advertencia sobre las funciones no utilizadas?
He aquí un ejemplo:
foo.c
(asumir apropiada foo.h
):
void foo() {
....
}
void bar() {
....
}
main.c
:
#include <stdio.h>
#include "foo.h"
int main(void) {
bar();
return 0;
}
En este ejemplo, me gustaría llegar advertido sobre foo()
no estar usado.
Existe la opción -Wunused-function
gcc:
-Wunused-function
avise siempre una función estática se declara pero no está definida o una función estática en línea no se utiliza. Esta advertencia es habilitada por -Wall.
pero es solo para funciones estáticas, no aparecerá una advertencia en el ejemplo anterior.
También aceptaré sugerencias de herramientas/scripts/otros compiladores que puedan hacer esto por mí, aunque preferiría seguir con gcc
si es posible.
Hay una buena razón para no advertir por defecto las funciones no estáticas. Una función no estática es parte de la interfaz pública, ya que podría alimentar fácilmente un archivo .o generado por gcc a través del enlazador para generar una biblioteca .a o .so en la que todas esas funciones no estáticas estén disponibles para todos los enlaces. con la biblioteca. Dicho esto, esta sigue siendo una gran pregunta, que espero que tenga una respuesta útil. –
Absolutamente, no debería estar activado por defecto. Aún así, me gustaría poder activarlo en el momento del enlace final si la función existe :) –
Relevante http: //gcc.gnu.org/ml/gcc-help/2003-08/msg00072.html? –