Question

Nous prévoyons d'utiliser Splint comme analyseur de code pour notre base de code C. Mais on n'a jamais essayé outil Splint avant si nous voulons que votre entrée sur son benifts, les avantages et les inconvénients.

Était-ce utile?

La solution

ce blog et ces diapositives pour un aperçu rapide de ce il peut le faire pour vous.

Autres conseils

outils Lint sont utiles pour trouver des problèmes communs et des erreurs que les examens de code ont tendance à manquer. Mon opinion est que vous avez rien à perdre lors de faire l'analyse de code statique. Le seul inconvénient est que vous pourriez obtenir beaucoup de faux positifs ou des avertissements qui pourraient être sans importance (à savoir la recommandation de style de codage). Il vous suffit de développer de bonnes compétences de filtrage. analyseurs statiques pourraient pas non plus tout attraper, mais bon, il vaut mieux que rien.

Voici un livre blanc de l'institut d'intérêt SANS de puissance vous: http://www.sans.org/reading_room / Livres blancs / SecureCode / sécurité-développement logiciel code-analyse-tools_389

Splint excelle à rendre votre code plus idiomatiques (et donc plus facile à lire, pour les différents compilateurs pour analyser, plus portable , et plus facile à refactoring). Splint peut trouver des bugs subtils tels que des moulages implicites entre ints et flotteurs. pistes Splint les fuites de mémoire et d'autres failles de sécurité.

Essayez-:. splint hello.c

Comme suggéré waffleman analyseurs statiques ne produisent beaucoup de fausses alarmes. J'ai trouvé Prevent pour donner de meilleurs alarmes que Sparrow. Ce sont deux que nous utilisons pour l'analyse statique.

Un exemple d'une fausse alarme typique et une bonne alarme est:

bar (char **output) 
{
  *output = malloc(100);
}
foo()
{
  char *output=NULL;
  bar(&output)   
}

Dans la barre de fonction, il ferait rapport fuite de mémoire pour la sortie de pointeur. Dans la fonction foo il rend compte déréférencer NULL lorsque la barre de fonction est appelée. Mais néanmoins son choix entre trouver une véritable alarme entre 100s de fausses alarmes.

On peut donc trouver des fuites de mémoire qui peuvent passer inaperçues pendant les revues de code. Prévenir la licence est coûteuse et une fois une alarme est marquée faux il ne marche pas apparaître dans l'analyse ultérieure. Par conséquent, vous devez trouver si Splint fait la même chose.

L'outil recherche modèle qui pourrait être des erreurs. L'avantage est que l'outil peut trouver des bogues latents et l'inconvénient est qu'il peut trouver un tas sur des faux positifs aussi bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top