Το PVS-studio
είναι ένας στατικός αναλυτής κώδικα για C,C++,C# και Java. Έχω εντυπωσιαστεί με τα προβλήματα που κατά καιρούς βρίσκει και διορθώνει σε προγράμματα ανοικτού κώδικα, που κάποιες φορές έχουν περάσει απαρατήρητα για δεκαετίες.
Δεν είναι ελεύθερο λογισμικό. Όσο για την τιμή του, δεν τολμώ καν να ρωτήσω καν πόσο κάνει, μιας και το αγοραστικό του κοινό είναι πολύ μεγάλες εταιρίες. Ευτυχώς η εταιρία που το κατασκευάζει το διαθέτει δωρεάν, ακόμα και για μικρούς ανεξάρτητους προγραμματιστές. Το μόνο που πρέπει να κάνεις, είναι να προσθέσεις ένα σχόλιο στην αρχή κάθε πηγαίου αρχείου.
Υπάρχει και ένα πρόγραμμα που το κάνει αυτό αυτόματα, αλλά υπάρχει και το παλιό καλό sed
.
find src test -name "*.cpp" | xargs sed -i "1i// This is an open source non-commercial project. Dear PVS-Studio, please check it.\n// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com"
Οι γραμμές μπορούν να αφαιρεθούν με ένα
sed -i "1,2d"
, αλλά αυτό μπορείς να το κάνεις νόμιμα μόνο μια φορά. Αν το βρείς χρήσιμο, θα πρέπει να αφήσεις τα σχόλια εκεί και να μπούν και στο αποθετήριο.
Εγκατάσταση και χρήση
Κατεβάζουμε το πρόγραμμα από εδώ PVS-Studio download.
-
Αν χρησιμοποιούμε το cmake θα πρέπει να ενεργοποιήσουμε το compiling database με
- -DCMAKE_EXPORT_COMPILE_COMMANDS=On
ή μεset(CMAKE_EXPORT_COMPILE_COMMANDS ON)
μέσα στοCMakeLists.txt
-
Στην γενική περίπτωση (πχ με το
make
) θα φτιάξει την βάση με την βοήθεια του strace. Το build θα πρέπει να κάνει compile όλα τα αρχεία
pvs-studio-analyzer trace -- make debug -j8
Ανάλυση και αναφορές
Πρώτα θα κάνουμε την ανάλυση και μετά θα εξετάσουμε τα αρχεία καταγραφής. Η εντολή plog-converter
θα τα μετατρέψει σε κάτι κατάλληλο για χρήση από την μηχανή ή από ένα προγραμματιστή.
pvs-studio-analyzer analyze -j2 -o PVS-Studio.log
mkdir -p pvs_report
plog-converter -a GA:1,2 -t fullhtml -o pvs_report PVS-Studio.log
xdg-open pvs_report/fullhtml/index.html
Για περισσότερα δες PVS-Studio manual. Και αν βρήκες κάποιο καλά κρυμμένο πρόβλημα στον κώδικα σου, πες πας την ιστορία σου.