Μονάδα 4 / 12

Αναθεώρηση κώδικα και εύρεση σφαλμάτων

Κέρδη:

  • Δυνατότητα χρήσης του AI ως αρχικού φίλτρου ελέγχου με κατηγορίες και ετικέτες σοβαρότητας
  • Δυνατότητα φιλτραρίσματος ευρημάτων με ανθρώπινο μυαλό για επαλήθευση/ψευδώς θετική/εφαρμογή
  • Δυνατότητα επιβολής απαιτήσεων ανθρώπινης έγκρισης σε επιχειρηματικούς κανόνες, αρχιτεκτονική και αποφάσεις κρίσιμες για την ασφάλεια

Αναθεώρηση κώδικα είναι όταν μια αλλαγή που γράφτηκε από έναν προγραμματιστή ελέγχεται από κάποιον άλλο πριν συγχωνευθεί. Καλή κριτική. Εντοπίζει σφάλματα νωρίς, μοιράζεται πληροφορίες και διατηρεί τη βάση κώδικα συνεπή. Αλλά οι κριτικές είναι κουραστικές, επιρρεπείς σε απόσπαση της προσοχής και γίνονται επιφανειακές υπό την πίεση χρόνου. Η τεχνητή νοημοσύνη είναι ένας διπλός βοηθός εδώ: σας επιτρέπει τόσο να προκαθαρίσετε τον δικό σας κωδικό που υποβάλλετε για έλεγχο όσο και να εξετάσετε το PR (αίτημα έλξης) κάποιου άλλου με πιο έντονο μάτι.

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

Ποια είναι η καλή και η κακή τεχνητή νοημοσύνη στην ανασκόπηση

Κατάλληλο για: αστοχίες μηδενικού ελέγχου, διαρροές πόρων (αρχείο/σύνδεσμος παραμένει ανοιχτό), μη καταγεγραμμένες εξαιρέσεις, προφανώς λανθασμένες συνθήκες (>= αντί για >), προτάσεις μετονομασίας, αναγνωσιμότητα, ελλείψεις ακμών, απλές μυρωδιές ασφαλείας (όπως η συνένωση συμβολοσειρών SQL), ανίχνευση διπλότυπου κώδικα.

Αδυναμίες: Βαθιά ελαττώματα που παραβιάζουν τους κανόνες της επιχείρησής σας, αλλά απαιτούν πλαίσιο και χρονισμό, όπως ορθή συντακτική λογική, αρχιτεκτονική συμμόρφωση, πραγματικά προβλήματα απόδοσης, σφάλματα ταυτόχρονης χρήσης. Η τεχνητή νοημοσύνη παράγει επίσης ψευδώς θετικά (παρερμηνεύοντας κάτι που στην πραγματικότητα δεν αποτελεί πρόβλημα για πρόβλημα) και ψευδώς αρνητικά (χάνει το πραγματικό σφάλμα). Ως εκ τούτου, η έκδοσή του είναι μια "κατάλογος προσοχής", όχι μια οριστική ετυμηγορία.

Προσοχή: Ακριβώς επειδή το AI λέει "κανένα πρόβλημα" δεν αποδεικνύει ότι ο κωδικός είναι σωστός. Τα ψευδώς αρνητικά είναι σιωπηλά. Τα πιο επικίνδυνα λάθη είναι αυτά που δεν αναφέρονται ποτέ στην κριτική.

Βήματα Συστηματικής Αναθεώρησης

  1. Δώστε το πλαίσιο. Προσθέστε το σκοπό της αλλαγής, το σχετικό ζήτημα και τα κριτήρια αποδοχής, εάν υπάρχουν, στην προτροπή. Η άσκοπη αναθεώρηση παράγει άσκοπη ερμηνεία.
  2. Χωρίστε το σε κατηγορίες. Ζητήστε από το μοντέλο να ταξινομήσει τα ευρήματα ως "σφάλμα/ασφάλεια/απόδοση/αναγνωσιμότητα/στυλ". οπότε διαχωρίζεις το κρίσιμο από το θόρυβο.
  3. Ζητήστε μια ετικέτα σοβαρότητας. Δώστε σε κάθε εύρημα μια βαθμολογία "υψηλή/μέτρια/χαμηλή" και συμπεριλάβετε την "αιτία" και "συνιστώμενη διόρθωση".
  4. Φιλτράρετε το με τα μάτια σας. Αξιολογήστε κάθε εύρημα: είναι πραγματικό (επαληθεύστε), είναι ψευδώς θετικό (γράψτε αιτιολόγηση), λείπει κάτι (προσθέστε τις γνώσεις σας).
  5. Επαληθεύστε τις κρίσιμες διαδρομές με μη αυτόματο τρόπο. Διαβάστε και εκτελέστε μόνοι σας διαδρομές που περιλαμβάνουν χρήματα, ταυτότητα, εξουσιοδότηση και διαγραφή δεδομένων χωρίς να βασίζεστε στην τεχνητή νοημοσύνη.

Τρεις Μίνι Θήκες

Περίπτωση 1 — Εντοπίστηκε αθόρυβο μηδενικό σφάλμα. Μια ομάδα έκανε προεπισκόπηση AI 380 γραμμών PR. Το μοντέλο επισήμανε έναν τρόπο με τον οποίο μια απόκριση εξωτερικής υπηρεσίας θα μπορούσε να είναι μηδενική, αλλά δεν έγιναν έλεγχοι για αυτό στον κώδικα. Ο ανθρώπινος αναθεωρητής επαλήθευσε αυτήν τη διαδρομή και πρόσθεσε έναν μηδενικό έλεγχο. Ένα παρόμοιο σφάλμα προκάλεσε 2ωρη διακοπή της παραγωγής το προηγούμενο τρίμηνο.

Περίπτωση 2 — Εσφαλμένη θετική εξάλειψη. Το AI επισήμανε ένα "πιθανό πρόβλημα απόδοσης" σε βρόχο. Ο αναθεωρητής το έκλεισε ως ψευδώς θετικό, γνωρίζοντας ότι ο βρόχος λειτουργεί μόνο με μέγιστο αριθμό 5 στοιχείων (κυκλοφορεί πάνω από έναν αριθμό). Το μοντέλο, που δεν γνώριζε το πλαίσιο, προειδοποίησε. Το άτομο που γνώριζε το πλαίσιο πήρε τη σωστή απόφαση.

Περίπτωση 3 — Η τεχνητή νοημοσύνη έχασε σφάλμα επιχειρηματικού κανόνα. Ενώ ένας εκπτωτικός λογαριασμός θα πρέπει να είναι το πολύ 30% σύμφωνα με τον κανόνα της καμπάνιας, ο κωδικός επέτρεπε το 50%. Το AI δεν παρατήρησε ποτέ αυτό το συντακτικά τέλειο λογικό σφάλμα. γιατί δεν ήξερε τον κανόνα. Το σφάλμα εντοπίστηκε στην αξιολόγηση από τον ιδιοκτήτη του προϊόντος που γνώριζε τα κριτήρια αποδοχής. Μάθημα: Η επικύρωση επιχειρηματικών κανόνων είναι μια ανθρώπινη δουλειά.

Τέσσερα αντιγράψιμα πρότυπα

Ανασκόπηση προσανατολισμένη στο σκοπό, κατηγοριοποιημένη:

Ρόλος: Σχολαστικός ελεγκτής κώδικα. Σκοπός αλλαγής: {{purpose / issue}}Ελέγξτε αυτήν τη διαφορά. Παρέχετε ευρήματα σε αυτές τις κατηγορίες: [Σφάλμα] [Ασφάλεια][Απόδοση] [Αναγνωσιμότητα] [Στυλ]. Για κάθε εύρημα: αρχείο:σειρά, σοβαρότητα (υψηλή/μέτρια/χαμηλή), αιτία, προτεινόμενη διόρθωση. Σημειώστε "πιθανό" εάν δεν είστε σίγουροι. Δεν γνωρίζετε τους κανόνες της επιχείρησης. Ρωτήστε με για μέρη που απαιτούν κανόνες.{{διαφορά}}

Για να προετοιμαστείτε να ελέγξετε τον δικό σας κωδικό:

Ελέγξτε αυτήν την αλλαγή πριν ανοίξετε ένα PR. Αναζητήστε: λείπει null/έλεγχος σφαλμάτων, διαρροή πόρων, περίβλημα άκρων, μυστικό, μη δοκιμασμένο κλάδο. Καταγράψτε τα ευρήματα με σειρά προτεραιότητας. προτείνετε διόρθωση 1 γραμμή για καθεμία.{{code}}

Κυνήγι άκρων:

Καταχωρίστε τις εισόδους και τις καταστάσεις όπου αυτή η συνάρτηση ενδέχεται να διακοπεί: άδεια, μηδενική, πολύ μεγάλη, αρνητική, ταυτόχρονη κλήση, σφάλμα δικτύου, μερικά δεδομένα. Για κάθε περίπτωση, γράψτε την αναμενόμενη συμπεριφορά και τι θα κάνει ο τρέχων κώδικας.{{function}}

Σάρωση αρωμάτων ασφαλείας (προ-έλεγχος):

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

Αδύναμη προτροπή / Ισχυρή προτροπή

Αδύναμος: "Υπάρχει κάποιο λάθος σε αυτό το PR;"
Ισχυρός: "Σκοπός: προσθήκη έκπτωσης κουπονιού στο σύνολο του καλαθιού (η έκπτωση δεν πρέπει να υπερβαίνει το 30% — δεν μπορείτε να επαληθεύσετε μόνοι σας αυτόν τον κανόνα, απλώς πείτε μου αν ο κωδικός επιβάλλει ένα ανώτερο όριο). Εξετάστε τη διαφορά. δώστε ευρήματα ανά κατηγορία + σοβαρότητα + προτεινόμενη διόρθωση, σημειώστε "πιθανό" εάν δεν είστε σίγουροι. [διαφορά]"

Η ισχυρή έκδοση δηλώνει ξεκάθαρα την πρόθεση, τον επιχειρηματικό κανόνα και τα όρια του AI. Έτσι, έρχονται χρήσιμα ευρήματα και η άγνωστη στο μοντέλο περιοχή παραμένει ξεκάθαρη.

Εύρεση τύπου

Αξιοπιστία AI

ο ρόλος του ανθρώπου

Λείπει έλεγχος μηδενικού/λάθους

ψηλά

Επαληθεύστε και εφαρμόστε

Αναγνωσιμότητα/στυλ

ψηλά

Επιλέξτε κατά προτίμηση

Απλή μυρωδιά ασφαλείας

μεσαίο

Ολοκλήρωση, σάρωση με όχημα

Συμμόρφωση επιχειρηματικών κανόνων

χαμηλά

Είναι εντελώς ανθρώπινο.

Συγχρονισμός/αρχιτεκτονική

χαμηλά

Απαιτείται έλεγχος εμπειρογνωμόνων

Το AI Review δεν αντικαθιστά την ανθρώπινη κριτική

Τοποθετήστε την αναθεώρηση AI ως «πρώτο φίλτρο»: ένα φτηνό, γρήγορο, ακούραστο προκαταρκτικό πάσο. Αυτό το φίλτρο απελευθερώνει την προσοχή του ανθρώπινου κριτικού από ασήμαντες λεπτομέρειες (ένας χώρος, ένα όνομα) και τον κατευθύνει σε μέρη που απαιτούν πραγματικά σκέψη - τον επιχειρηματικό κανόνα, την αρχιτεκτονική, το αποτέλεσμα ασφάλειας. Αλλά η έγκριση συγχώνευσης είναι η υπογραφή ενός υπεύθυνου ατόμου εντός της ομάδας. Η ανεξάρτητη εξέταση από τουλάχιστον έναν αρμόδιο μηχανικό είναι υποχρεωτική για κρίσιμες για την ασφάλεια αλλαγές.

Συμβουλή: Διαβάστε τη λίστα με τα ευρήματα που παράγει το AI ως «πράγματα που πρέπει να ελέγξετε» και όχι ως «να κάνετε». Είτε επαληθεύστε και εφαρμόστε κάθε στοιχείο ή σημειώστε σε μία πρόταση γιατί το περάσατε. αυτό το ίχνος καθιστά την αξιολόγηση ελεγχόμενη.

Συνήθη λάθη

  • Σημαίνει "Το AI φαινόταν, είναι καθαρό". Αυτή είναι μια ψεύτικη αίσθηση εμπιστοσύνης λόγω ψευδών αρνητικών.
  • Μη δίνοντας πλαίσιο. Χωρίς κριτήρια σκοπού και αποδοχής, το μοντέλο παράγει μόνο επιφανειακές ερμηνείες στυλ.
  • Τυφλή εφαρμογή ψευδών θετικών. Η διόρθωση κάθε προειδοποίησης του μοντέλου θα μπορούσε να σπάσει τον τρέχοντα κώδικα.
  • Ρωτώντας το μοντέλο για τον επιχειρηματικό κανόνα. Το μοντέλο δεν γνωρίζει τον κανόνα. Είναι στο χέρι του ανθρώπου να το επαληθεύσει.
  • Μην κάνετε διακρίσεις κατά της βίας. Η τοποθέτηση μιας κρίσιμης εύρεσης ασφαλείας και μιας πρότασης ονόματος στο ίδιο σάκο επισκιάζει ό,τι είναι σημαντικό.

Συνοπτικά

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

Εργασία εφαρμογής

Επιλέξτε ένα πραγματικό ή πρόσφατο PR/διαφορ. Πρώτα, ζητήστε από το AI να το ελέγξει με το πρότυπο "αντικειμενικά προσανατολισμένο, κριτική κατηγορίας". Βάλτε τα ευρήματα σε έναν πίνακα και αποφασίστε για το καθένα: αληθές (επαληθεύτηκα), ψευδώς θετικό (εδώ είναι το σκεπτικό μου) ή προς εφαρμογή. Στη συνέχεια, κάντε μια περιήγηση μόνοι σας και προσπαθήστε να βρείτε τουλάχιστον ένα πράγμα (ειδικά έναν επιχειρηματικό κανόνα ή μια περίπτωση αιχμής) που λείπει από το AI και σημειώστε το.

λίστα ελέγχου

  • [ ] Χρησιμοποιώ την κριτική AI ως πρώτο φίλτρο, όχι ως έγκριση.
  • [ ] Προσθέτω τον σκοπό και τα κριτήρια αποδοχής στο μήνυμα ελέγχου.
  • [ ] Διαχωρίζω τα ευρήματα από τον θόρυβο ανά κατηγορία και επιθυμώντας τα έντονα.
  • [ ] Φιλτράρω συνειδητά κάθε εύρημα για επιβεβαίωση/ψευδώς θετική/εφαρμογή.
  • [ ] Ως άνθρωπος, ελέγχω τους επιχειρηματικούς κανόνες και την αρχιτεκτονική συμμόρφωση.
  • [ ] Απαιτώ έγκριση από εξειδικευμένο μηχανικό για κρίσιμες για την ασφάλεια αλλαγές.