2017-08-11 5 views
5

Parfois, le code trouve son chemin sur la branche dev de mon équipe qui se compile très lentement. Quand cela arrive au point où il faut plusieurs minutes, nous n'avons pas d'autre choix que de laisser tomber nos tâches et chercher ce qui a causé cela, nous perdrions beaucoup de temps jusqu'à ce que nous le résolvions. Pour les performances de nos applications, nous avons des tests unitaires pour empêcher nos utilisateurs de connaître des temps lents, je me demande s'il est possible de tester un test où des temps de compilation lents feront échouer nos tests. être identifié et retiré immédiatement avant qu'ils ne gaspillent le temps entier de l'équipe.Puis-je créer un test unitaire qui échoue si le temps de compilation dépasse un niveau acceptable?

Répondre

1

Vous pouvez ajouter dans les paramètres de compilation de votre projet -> Autres drapeaux Swift le drapeau suivant: -Xfrontend -warn-long-function-bodies=<time> où dans <time> vous spécifiez la quantité de ms. Vous pourrez ensuite voir les avertissements pour toute fonction qui prend plus de temps et les corriger.

Il ne va pas échouer à vos tests, mais toute l'équipe sera consciente quand ils codent quelque chose qui prend trop de temps à compiler.

0

Peut-être qu'il a besoin d'un peu d'effort supplémentaire, mais une solution possible:

J'utilise « xcodebuild construction propre OTHER_SWIFT_FLAGS = "- Xfrontend -debug fonction-temps-corps" | grep "[0-9] [0-9]. [0-9] * ms" | sort -nr> culprits.txt 'pour obtenir un fichier texte avec le temps qu'il a fallu pour compiler des méthodes individuelles. Ensuite, vous savez où le compilateur est bloqué et peut optimiser jusqu'à ce que la méthode qui prend le plus de temps à compiler soit < 100ms.

source