Επιλέγοντας ένα εργαλείο ανάλυσης στατικού κώδικα

ψήφοι
54

Δουλεύω για ένα έργο όπου είμαι κωδικοποίηση σε C σε περιβάλλον UNIX. Έχω χρησιμοποιήσει το εργαλείο χνούδι για να ελέγξετε τον πηγαίο κώδικα μου. Στουπί έχει εδώ και πολύ καιρό (από το 1979), μπορεί κανείς να προτείνει ένα πιο πρόσφατο εργαλείο ανάλυσης κώδικα θα μπορούσα να χρησιμοποιήσω; Κατά προτίμηση ένα εργαλείο που είναι δωρεάν.

Δημοσιεύθηκε 05/08/2008 στις 22:19
πηγή χρήστη
Σε άλλες γλώσσες...                            


15 απαντήσεις

ψήφοι
30

Μην παραβλέπουμε το ίδιο το μεταγλωττιστή.

Διαβάστε την τεκμηρίωση του compiler και βρείτε όλες τις προειδοποιήσεις και τα σφάλματα που μπορεί να προσφέρει, και στη συνέχεια να ενεργοποιήσετε όσες έχουν νόημα για σας.

Επίσης, φροντίστε να πει compiler σας για τη θεραπεία προειδοποιήσεις όπως σφάλματα ώστε να είστε αναγκασμένοι να τα διορθώσετε αμέσως. ( "-Werror" σε gcc)

Επίσης: «-Wall» σε gcc δεν δεν επιτρέπουν όλες τις προειδοποιήσεις, δεν πρέπει να ξεγελαστούν.

Επίσης επίσης: ελέγξτε valgrind - το «ανιχνεύει αυτόματα [s] πολλά διαχείριση μνήμης και σπειρωμάτων σφάλματα, και το προφίλ [s] των προγραμμάτων σας με κάθε λεπτομέρεια.» (Δωρεάν!)

Valgrind δεν είναι ένα στατικό έλεγχο, αλλά είναι ένα μεγάλο εργαλείο! http://valgrind.org

Απαντήθηκε 05/08/2008 στις 23:17
πηγή χρήστη

ψήφοι
14

Για τον κωδικό C, σίγουρα θα πρέπει σίγουρα να χρησιμοποιήσετε Flexelint . Θα χρησιμοποιηθεί για σχεδόν 15 χρόνια και ορκίζονται από αυτήν. Ένα από τα πραγματικά μεγάλες δυνατότητες που έχει είναι ότι οι προειδοποιήσεις μπορεί επιλεκτικά να απενεργοποιηθεί και με σχόλια στον κώδικα ( «/ * χνούδι -e123 * /»). Αυτό αποδείχθηκε ότι ήταν ένα ισχυρό εργαλείο για την τεκμηρίωση, όταν ήθελε κάτι έξω από τα συνηθισμένα. «Είμαι απενεργοποίηση προειδοποίησης Χ, ως εκ τούτου, δεν υπάρχει κάποια καλός λόγος που κάνω Χ»

Για κανέναν σε ενδιαφέρουσες C C ++ ερωτήσεις /, μια ματιά σε μερικά από τα παραδείγματα τους στην περιοχή τους και δείτε αν μπορείτε να υπολογίσετε τα σφάλματα χωρίς να κοιτάζει τις υποδείξεις.

Απαντήθηκε 05/08/2008 στις 22:42
πηγή χρήστη

ψήφοι
12

Έχω ακούσει καλά πράγματα για κλαγγή στατικό αναλυτή , η οποία χρησιμοποιεί IIRC LLVM όπως είναι backend. Αν αυτό είναι που εφαρμόζονται για την πλατφόρμα σας, ότι θα μπορούσε να είναι μια καλή επιλογή.

Από ό, τι καταλαβαίνω, το κάνει λίγο περισσότερο από ό, τι ακριβώς σύνταξη ανάλυση. «Αυτόματη εύρεση σφαλμάτων», για παράδειγμα.

Απαντήθηκε 06/08/2008 στις 01:40
πηγή χρήστη

ψήφοι
5

Έχω συντάξει πρόσφατα μια λίστα με όλα τα στατικά εργαλεία ανάλυσης που είχα στη διάθεσή μου, είμαι ακόμη στο στάδιο της αξιολόγησης όλα αυτά. Σημειώστε, αυτά είναι ως επί το πλείστον εργαλεία ανάλυσης της ασφάλειας.

Απαντήθηκε 03/09/2008 στις 23:11
πηγή χρήστη

ψήφοι
5

Έχουμε χρησιμοποιήσει Coverity Αποτροπή να ελέγξετε C ++ πηγαίο κώδικα.

Δεν είναι ένα δωρεάν εργαλείο (αν και πιστεύω ότι προσφέρουν δωρεάν σάρωση για τα έργα ανοικτού κώδικα), αλλά είναι ένα από τα καλύτερα εργαλεία στατικής ανάλυσης που θα βρείτε. Έχω ακούσει ότι είναι ακόμα πιο εντυπωσιακό σε C από ό, τι C ++, αλλά είναι μας βοήθησαν να αποφευχθεί ένα μεγάλο αριθμό σφαλμάτων μέχρι τώρα.

Απαντήθηκε 15/08/2008 στις 18:47
πηγή χρήστη

ψήφοι
4

Μπορείτε να χρησιμοποιήσετε cppcheck . Είναι ένα εύκολο στη χρήση στατικό εργαλείο ανάλυσης κώδικα.
Για παράδειγμα:
cppcheck --enable=all .
θα ελέγξει όλες τις C / C ++ αρχεία του τρέχοντος φακέλου.

Απαντήθηκε 25/06/2015 στις 15:54
πηγή χρήστη

ψήφοι
1

Μπορείτε να δοκιμάσετε CppDepend , μια αρκετά πλήρη διαθέσιμο για Windows και Linux στατικό αναλυτή, σκέψης VS Plugin, IDE ή εντολών γραμμής, και είναι δωρεάν για τους συντελεστές ανοιχτού κώδικα

Απαντήθηκε 26/06/2015 στις 12:01
πηγή χρήστη

ψήφοι
1

PC-χνούδι / Flexelint είναι πολύ ισχυρό και χρήσιμο στατικά εργαλεία ανάλυσης, και ιδιαίτερα διαμορφώσιμο, αν και δυστυχώς δεν είναι δωρεάν.

Κατά την πρώτη χρησιμοποιώντας ένα εργαλείο σαν αυτό, μπορούν να παράγουν τεράστιους αριθμούς των προειδοποιήσεων, οι οποίες μπορεί να είναι δύσκολο να γίνει διάκριση μεταξύ της μείζονος και ελάσσονος αυτά. Ως εκ τούτου, είναι καλύτερο να αρχίσετε να χρησιμοποιείτε το εργαλείο κωδικό σας νωρίς το έργο του δυνατού, και στη συνέχεια να τρέξει στον κώδικά σας όσο το δυνατόν συχνότερα, έτσι ώστε να μπορείτε να ασχοληθεί με νέες προειδοποιήσεις που έρχονται.

Με συνεχή χρήση, όπως αυτό, σύντομα θα μάθετε πώς να γράφουν κώδικα σας με έναν τρόπο που επιβεβαιώνει τους κανόνες που εφαρμόζονται από το εργαλείο.

Εξαιτίας αυτού, προτιμώ εργαλεία όπως το χνούδι που τρέχουν σχετικά γρήγορα, και έτσι να ενθαρρύνει τη συνεχή χρήση, παρά τις πιο δυσκίνητη εργαλεία, που μπορείτε να καταλήξετε με λιγότερο συχνά, αν όχι καθόλου.

Απαντήθηκε 20/12/2008 στις 00:29
πηγή χρήστη

ψήφοι
1

Χνούδι που μοιάζει με εργαλεία πάσχουν γενικά από ένα πρόβλημα «ψευδή συναγερμό»: αναφέρουν πολλά περισσότερα προβλήματα από ό, τι πραγματικά υπάρχει. Αν το ποσοστό των πραγματικά χρήσιμο προειδοποιήσεις είναι πολύ χαμηλή, ο χρήστης μαθαίνει να αγνοήσει απλά το εργαλείο. Πιο σύγχρονα εργαλεία δαπανήσει κάποια προσπάθεια να επικεντρωθεί στις πιο πιθανό / ενδιαφέρον προειδοποιήσεις.

Απαντήθηκε 23/08/2008 στις 15:29
πηγή χρήστη

ψήφοι
1

Μπορείτε να βρείτε το εργαλείο Uno χρήσιμο. Είναι μία από τις λίγες ελεύθερες επιλογές μη-παιχνίδι. Διαφέρει από χνούδι, Flexelint, κλπ εστιάζοντας σε ένα μικρό αριθμό «σημασιολογική» σφάλματα (derefs δείκτης null, out-of-όρια δεικτών σειρά, και η χρήση της δεν έχει προετοιμαστεί μεταβλητές). Επιτρέπει, επίσης, ορίζονται από το χρήστη ελέγχους, όπως το κλείδωμα-ξεκλείδωμα πειθαρχία.

Δουλεύω για μια δημόσια έκδοση του διαδόχου του εργαλείου, Orion ( το περιεχόμενο δεν είναι πλέον διαθέσιμη )

Απαντήθηκε 15/08/2008 στις 23:39
πηγή χρήστη

ψήφοι
0

Αραιή είναι ένα εργαλείο λογισμικού ηλεκτρονικών υπολογιστών, είναι ήδη διαθέσιμα στο Linux, έχουν σχεδιαστεί για να βρείτε πιθανές κωδικοποίησης σφάλματα στον πυρήνα του Linux.

Υπάρχουν δύο ενεργών έργων του Linux Κέντρου Ελέγχου με στόχο τη βελτίωση της ποιότητας των modules για τον πυρήνα.

  1. Linux Driver επαλήθευσης (LDV) - ένα ολοκληρωμένο σύνολο εργαλείων για τον κωδικό στατική πηγή επαλήθευσης των προγραμμάτων οδήγησης συσκευών Linux.
  2. KEDR πλαίσιο - ένα επεκτάσιμο πλαίσιο για δυναμική ανάλυση και επαλήθευση των ενοτήτων του πυρήνα.
  3. Ένα άλλο τρέχον πρόγραμμα είναι το Linux το αρχείο επαλήθευσης του συστήματος που έχει ως στόχο να αναπτύξει ένα ειδικό σύνολο εργαλείων για την επαλήθευση του Linux εφαρμογές συστήματος αρχείων.
Απαντήθηκε 20/12/2012 στις 08:36
πηγή χρήστη

ψήφοι
0

Έχω διαπιστώσει ότι είναι γενικά καλύτερο να χρησιμοποιήσετε πολλές στατική εργαλεία ανάλυσης για να βρείτε σφάλματα. Κάθε εργαλείο έχει σχεδιαστεί με διαφορετικό τρόπο, και μπορούν να βρουν πολύ διαφορετικά πράγματα ο ένας από τον άλλο.

Υπάρχουν κάποιες καλές συζητήσεις σε ορισμένες από τις συνομιλίες εδώ . Είναι από ένα συνέδριο που πραγματοποιήθηκε από το Υπουργείο Εσωτερικής Ασφάλειας των ΗΠΑ για την στατική ανάλυση.

Απαντήθηκε 15/06/2011 στις 07:53
πηγή χρήστη

ψήφοι
0

Καλημέρα,

Συμφωνώ απόλυτα με τις προτάσεις για να διαβάσετε και να χωνέψει αυτό που ο compiler σας λέει μετά τη ρύθμιση -Wall.

Ένα καλό στατικό εργαλείο ανάλυσης για την ασφάλεια FlawFinder γραμμένο από τον David Wheeler. Κάνει καλή δουλειά ψάχνουν για διάφορες εκμεταλλεύεται την ασφάλεια,

Ωστόσο, αυτό δεν αντικαθιστά με ένα πεπειραμένο κάποιος διαβάσει τον κωδικό σας. Όπως λέει ο David στην ιστοσελίδα του, «Ένας ανόητος με ένα εργαλείο εξακολουθεί να είναι ένας ανόητος!»

Στην υγειά σας,

Ληστεύω

Απαντήθηκε 26/08/2008 στις 16:21
πηγή χρήστη

ψήφοι
0

χνούδι ενημερώνεται συνεχώς ... έτσι γιατί θα θέλετε ένα πιο πρόσφατο.

BTW flexelint είναι χνούδι

Απαντήθηκε 23/08/2008 στις 12:42
πηγή χρήστη

ψήφοι
0

Υπάρχει μια «-Weffc ++» επιλογή για gcc η οποία σύμφωνα με την σελίδα man Mac OS X θα:

Προειδοποίηση για τις παραβιάσεις των παρακάτω κατευθυντήριων γραμμών στυλ από Scott Meyers' Αποτελεσματική C ++ βιβλίο:

[ψαλιδίζω]

Ξέρω ότι ρωτήθηκε για C, αλλά αυτό είναι το πιο κοντινό ξέρω ..

Απαντήθηκε 15/08/2008 στις 23:03
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more