Comment puis-je exécuter un PC-Lint incrémentiel en utilisant make
Question
Je voudrais appliquer Gimpel PC-Lint à mon code source de manière incrémentielle en utilisant Make.Je veux qu'il n'exécute lint que sur le fichier source si le fichier source a changé depuis la dernière exécution de lint.Quelqu'un fait-il ça?Comment l'abordez-vous?
La solution
Le modèle courant consiste à créer une sortie (ou à créer une sortie artificielle s'il n'y en a pas).
Modifier notez que $(LINT) $< > $@
se développera en quelque chose comme lint test.cpp > test.lint
(redirigeant la sortie vers ce fichier)
Par exemple
%.o: %.cpp | %.lint
S(CC) -o $@ $(CPPFLAGS) $<
%.lint: %.cpp
$(LINT) $< > $@
ou pour un processus sans sortie:
%.o: %.cpp | %.emailsent
S(CC) -o $@ $(CPPFLAGS) $<
%.emailsent: %.cpp
$(DOEMAIL) $^ # no output from mail sender
touch $@ # won't be reached DOEMAIL returned error
Autres conseils
Vous pouvez ajouter la compilation lint à vos règles de compilation chaque fois que gcc (ou autre) est appelé.Cela soulèverait immédiatement tout problème avec le code avant de le tester ou de l'utiliser.D'un autre côté, ce serait beaucoup trop lent sur un projet plus important.
Je peluche généralement mes projets avant de les archiver. J'ai donc créé un petit script dans lequel je peluche tout ce qui a été extrait.Si vous avez une plate-forme douce (par exemple svn sur un serveur approprié), cela pourrait même être fait par le serveur afin que les utilisateurs puissent travailler sans avoir à attendre la fin de la charpie.