Configurarea scanării codului
Puteți configura modul în care GitHub scanează codul din proiect pentru vulnerabilități și erori. Atunci când alegeți propria configurație, economisiți timp și decideți cea mai bună frecvență a scanării codului pentru proiectul dvs. În această unitate, veți afla noțiunile de bază despre configurarea scanării codului. De asemenea, veți afla cum să configurați frecvența scanărilor și să le planificați pentru a se potrivi cel mai bine nevoilor dvs. de depozit și de dezvoltare.
După cum am discutat în unitățile anterioare, puteți rula scanarea codului pe GitHub, utilizând Acțiuni GitHub sau din sistemul de integrare continuă (CI). Selectarea opțiunii de configurare complexe de pe GitHub generează un fișier de flux de lucru particularizabil pe care îl puteți efectua apoi direct în depozit. De obicei nu trebuie să editați acest flux de lucru. Totuși, dacă este necesar, puteți particulariza unele dintre setări.
De exemplu, puteți edita fluxul de lucru de analiză CodeQL al GitHub pentru a specifica frecvența scanărilor, limbile sau directoarele de scanat și ce caută scanarea codului CodeQL în cod. De asemenea, poate fi necesar să editați fluxul de lucru de analiză CodeQL dacă utilizați un anumit set de comenzi pentru a compila codul. Analiza CodeQL este un singur tip de scanare a codului pe care îl puteți efectua în GitHub. GitHub Marketplace conține mai multe alte fluxuri de lucru de scanare a codului.
Comutarea de la Configurarea complexă de scanare a codului la setarea implicită de scanare a codului
Dacă aveți deja un depozit configurat pentru a utiliza scanarea codului utilizând metoda de configurare implicită, puteți comuta la utilizarea configurării complexe din setări. Navigați la secțiunea Scanare cod de sub Securitate și analiză cod Setări>, apoi selectați pictograma de depășire cu trei puncte (...). În lista verticală, selectați Comutare la complex. Apoi urmați solicitările pentru a dezactiva CodeQL și reactivați-l cu fișierul flux de lucru generat al configurării complexe.
Editare flux de lucru de scanare a codului
GitHub salvează fișierele fluxului de lucru în directorul .github/workflows al depozitului. Puteți găsi un flux de lucru pe care l-ați adăugat căutând numele său de fișier. De exemplu, în mod implicit, fișierul flux de lucru pentru scanarea codului CodeQL se numește codeql-analysis.yml.
Urmați acești pași pentru a edita un fișier flux de lucru:
Pentru a deschide editorul fluxului de lucru, selectați pictograma Editare din colțul din dreapta sus al vizualizării fișierului.
Efectuați editările.
După ce ați editat fișierul, selectați Comitere modificări și completați formularul Comitere modificări. Puteți alege să comiteți direct la ramura curentă sau să creați o ramură nouă și să începeți o solicitare de extragere.
Revizuiți următoarele secțiuni pentru câteva opțiuni comune de configurare a scanării codului.
Configurare frecvență
O editare obișnuită a fișierului flux de lucru este să ajustați frecvența cu care are loc scanarea codului. Puteți configura fluxul de lucru de analiză CodeQL pentru a scana codul după un program sau atunci când apar anumite evenimente într-un depozit. De asemenea, puteți edita fișierul flux de lucru pentru a scana codul atunci când cineva împinge o modificare și ori de câte ori este creată o solicitare de extragere. Ajustarea acestei frecvențe împiedică dezvoltatorii să introducă noi vulnerabilități și erori în cod. Scanarea codului după un program vă informează despre cele mai recente vulnerabilități și erori pe care GitHub, cercetătorii de securitate și comunitatea le descoperă. Chiar și atunci când dezvoltatorii nu păstrează în mod activ depozitul.
Scanare la împingere
În mod implicit, fluxul de lucru de analiză CodeQL utilizează evenimentul on:push pentru a declanșa o scanare de cod la fiecare împingere către ramura implicită a depozitului și a tuturor ramurilor protejate. Pentru ca scanarea codului să fie declanșată pe o ramură specificată, fluxul de lucru trebuie să existe în acea ramură. Dacă scanați push, rezultatele apar în fila Securitate pentru depozit.
În plus, atunci când o scanare de on:push returnează un rezultat care poate fi mapat la o solicitare de extragere deschisă, aceste avertizări apar automat într-o solicitare de tragere în același loc cu alte avertizări de solicitare de tragere. Avertizările sunt identificate prin compararea analizei existente a șefului filialei cu analiza pentru ramura țintă.
Scanare la PR
Fluxul de lucru de analiză CodeQL implicit utilizează evenimentul pull_request pentru a declanșa o scanare de cod pentru solicitările de extragere direcționate în raport cu ramura implicită. Dacă o solicitare de extragere este dintr-o furcă privată, evenimentul pull_request se declanșează doar dacă ați selectat opțiunea "Rulare fluxuri de lucru din solicitări de extragere furcă" din setările depozitului. Dacă scanați solicitările de extragere, rezultatele apar ca avertizări într-o verificare a solicitării de extragere.
Dacă utilizați declanșatorul de pull_request, configurat pentru a scana comiterea îmbinării solicitării de tragere, nu comiterea capului, aceasta produce rezultate mai eficiente și mai precise decât scanarea capului ramurii pe fiecare împingere. Totuși, dacă utilizați un sistem CI/CD care nu poate fi configurat să declanșeze solicitări de tragere, puteți utiliza în continuare declanșatorul de on:push, astfel încât scanarea codului să mapeze rezultatele pentru a deschide solicitările de tragere din ramură și adaugă avertizările ca adnotări într-o solicitare de tragere.
Definiți severitatea care determină nereușita verificării solicitării de tragere
În mod implicit, doar avertizările cu nivelul de severitate al Error sau al nivelului de severitate de securitate al Critical sau High provoacă o eroare de verificare a solicitării de extragere. Erorile de solicitare de extragere nu opresc o scanare de cod, dar reprezintă un blocant atunci când încercați să îmbinați codul. Puteți găsi lista de erori de solicitare de extragere în fila Alerte de scanare a codului de sub Securitatea depozitului. În setările depozitului, puteți modifica nivelurile de severitate a avertizărilor și severitatea securității care provoacă o eroare de verificare a solicitării de tragere.
Pe GitHub.com, navigați la pagina principală a depozitului. Sub numele depozitului, selectați Setări.
În bara laterală din stânga, selectați Securitate și analiză cod .
În secțiunea Scanare cod de sub Reguli de protecție, utilizați meniul vertical pentru a selecta nivelul de severitate pe care doriți să-l declanșați pentru a declanșa o eroare de verificare a solicitării de tragere.
Evitați scanările inutile ale solicitărilor de tragere
Se recomandă să evitați declanșarea unei scanările de cod pentru anumite solicitări de tragere direcționate către ramura implicită, indiferent de fișierele care au fost modificate. Puteți configura această setare specificând on:pull_request:paths-ignore sau on:pull_request:paths în fluxul de lucru de scanare a codului. De exemplu, dacă singurele modificări dintr-o solicitare de extragere sunt fișierele cu extensiile de fișier .md sau .txt puteți utiliza următoarea matrice paths-ignore.
on:
push:
branches: [main, protected]
pull_request:
branches: [main]
paths-ignore:
- '**/*.md'
- '**/*.txt'
Ajustarea planificării de scanare
Dacă utilizați fluxul de lucru de analiză CodeQL implicit, fluxul de lucru scanează codul în depozit o dată pe săptămână la o zi și oră generate aleator, pe lângă scanările declanșate de evenimente. Pentru a ajusta această planificare, editați valoarea cron din fluxul de lucru.
Următorul exemplu arată un flux de lucru de analiză CodeQL pentru un depozit cu o ramură implicită denumită main și o ramură protejată denumită protected:
on:
push:
branches: [main, protected]
pull_request:
branches: [main]
schedule:
- cron: '20 14 * * 1'
Acest flux de lucru scanează:
- Fiecare împingere la ramura implicită și la ramura protejată
- Fiecare solicitare de tragere la ramura implicită
- Ramura implicită în fiecare luni la ora 14:20 UTC