Το DeepCode, η υπηρεσία cloud που χρησιμοποιεί μηχανική εκμάθηση για την ανάλυση βάσεων κώδικα για ελαττώματα ασφαλείας και πιθανά σφάλματα, τώρα μπορεί να αναλύσει τον κώδικα C και C ++.
Εκπαιδευμένο αναλύοντας χιλιάδες έργα ανοιχτού κώδικα, το DeepCode παρέχει σχόλια για έργα σε πλατφόρμες φιλοξενίας κώδικα ή τοπικά αποθετήρια. Οι δημιουργοί του DeepCode ισχυρίζονται ότι παρέχουν καλύτερα και πιο λεπτομερή σχόλια από τα παραδοσιακά εργαλεία ανάλυσης κώδικα, επειδή αναλύουν τον κώδικα σε περιβάλλον - όχι μόνο ως κείμενο, αλλά και ως λογισμικό που εκτελείται.
Οι περισσότερες από τις ευπάθειες που εντοπίζονται στο λογισμικό εμφανίζονται σε βάσεις κώδικα C ή C ++. Όσο ισχυρές είναι και οι δύο γλώσσες, παρέχουν ελάχιστη ή καθόλου προστασία από λάθη προγραμματιστών και οι νεότερες εκδόσεις αυτών των γλωσσών αναγκάζονται να διατηρήσουν τη συμβατότητα προς τα πίσω και έτσι να παραμείνουν ευάλωτες.

Η βάση γνώσεων του DeepCode για θέματα περιλαμβάνει πολλά κοινά προβλήματα που εντοπίζονται στα C και C ++, καθώς και σε άλλες γλώσσες: ζητήματα στυλ, διαρροές πόρων, ζητήματα κατανομής μνήμης, ζητήματα χειρισμού ημερομηνιών και ασυμβατότητες σε διάφορες εκδόσεις μιας γλώσσας.
Σε μια ανάλυση του πυρήνα του Linux, το DeepCode βρήκε μια σειρά από κοινά προβλήματα σε βάσεις κώδικα C, συμπεριλαμβανομένων παραμέτρων που δεν έχουν τροποποιηθεί από ορίσματα γραμμής εντολών ή μεταβλητές περιβάλλοντος, ζητήματα μετά τη χρήση χωρίς χρήση και έλλειψη ελέγχων για μηδενικούς δείκτες. Άλλα ζητήματα στον κώδικα C είναι πιο ανεπαίσθητα, όπως η ανασφαλής δημιουργία προσωρινών αρχείων ή η πιθανότητα ορισμένων οδηγιών να βελτιστοποιηθούν κατά τη συλλογή και να μην έχουν το επιδιωκόμενο αποτέλεσμα.
Όταν κυκλοφόρησε αρχικά, το DeepCode υποστήριξε Java, JavaScript, TypeScript και Python, αλλά τα σχέδια ήταν στο τραπέζι για C, C ++ και άλλες γλώσσες. Σύμφωνα με την ανάρτηση ιστολογίου που ανακοίνωσε την υποστήριξη C / C ++, η προσθήκη ανάλυσης κώδικα για C και C ++ χρειάστηκε τρεις μήνες εργασίας, λόγω των περιπλοκών που περιλαμβάνουν τα χαρακτηριστικά χαμηλού επιπέδου του C / C ++.