¿Cómo puedo ejecutar una PC-Lint incremental usando Make?
Pregunta
Me gustaría aplicar Gimpel PC-Lint a mi código fuente de manera incremental usando Make. Quiero que solo ejecute la pelusa en el archivo fuente si el archivo fuente ha cambiado desde la última vez que se ejecutó la pelusa. ¿Alguien está haciendo esto? ¿Cómo te estás acercando?
Solución
El patrón común es crear salida (o crear salida artificial si no hay ninguno).
Editar tenga en cuenta que $(LINT) $< > $@
se expandirá a algo como lint test.cpp > test.lint
(redirigir la salida a ese archivo)
P.ej
%.o: %.cpp | %.lint
S(CC) -o $@ $(CPPFLAGS) $<
%.lint: %.cpp
$(LINT) $< > $@
o para un proceso sin salida:
%.o: %.cpp | %.emailsent
S(CC) -o $@ $(CPPFLAGS) $<
%.emailsent: %.cpp
$(DOEMAIL) $^ # no output from mail sender
touch $@ # won't be reached DOEMAIL returned error
Otros consejos
Puede agregar la compilación de pelusa a sus reglas de compilación siempre que se llame GCC (o lo que sea). Esto plantearía inmediatamente cualquier problema con el código antes de probarlo o usarlo. Por otro lado, esto sería demasiado lento en un proyecto más grande.
Por lo general, estoy pellizco mis proyectos antes de registrarlos. Por lo tanto, hice un pequeño guión donde pelea todo lo que se ha revisado. Si tiene una plataforma suave (por ejemplo, SVN en un servidor adecuado) esto podría ser realizado por el servidor, por lo que los usuarios podrían trabajar sin tener que esperar a que la pelusa finalice.