Âûáèðàé : Ïîêóïàé : Èñïîëüçóé
0

 PVS-Studio ïîäâåëè èòîãè 2025 ãîäà

 PVS-Studio ïîäâåëè èòîãè 2025 ã.: óëó÷øåíèÿ ïëàãèíîâ ñðåä ðàçðàáîòêè, òåõíîëîãè÷åñêîå ïàðòíåðñòâî ñ ASOC-ñèñòåìàìè...

 PVS-Studio ïîäâåëè èòîãè 2025 ã.: óëó÷øåíèÿ ïëàãèíîâ ñðåä ðàçðàáîòêè, òåõíîëîãè÷åñêîå ïàðòíåðñòâî ñ ASOC-ñèñòåìàìè, íîâûå äèàãíîñòè÷åñêèå ïðàâèëà îáùåãî íàçíà÷åíèÿ è íàöåëåííûå íà ïðîâåðêó ñîîòâåòñòâèÿ êîäà ñòàíäàðòàì OWASP è MISRA. Îá ýòîì CNews ñîîáùèëè ïðåäñòàâèòåëè PVS-Studio.

Ðàáîòàëè íàä óëó÷øåíèåì àíàëèçà. Äëÿ C è C++ âûïóñòèëè íîâûé ïàðñåð êîäà, óëó÷øèëè àíàëèç è ðàçáîð êîíñòðóêöèé ÿçûêà è ñòàíäàðòíîé áèáëèîòåêè.

«2025 ã. îçíàìåíîâàí óëó÷øåíèåì òåõíîëîãèé, èñïîëüçóåìûõ â C è C++-àíàëèçàòîðå: ìû ïîäãîòîâèëè ôóíäàìåíò äëÿ ïîääåðæêè íîâûõ ñòàíäàðòîâ ÿçûêîâ è ðàçâèòèÿ data flow è taint-àíàëèçà», — ñêàçàë Îëåã Ëûñûé, ðóêîâîäèòåëü îòäåëà ðàçðàáîòêè C è C++ àíàëèçàòîðà.

Ïðîèçâåäåííûå çà ãîä èçìåíåíèÿ â ìåõàíèçìå taint-àíàëèçà â èòîãå óâåëè÷èëè êîëè÷åñòâî ñëó÷àåâ, â êîòîðûõ àíàëèçàòîð ìîæåò íàéòè ïîòåíöèàëüíûå óÿçâèìîñòè. Ïîäðîáíåå ìîæíî ïðî÷èòàòü â ýòîé ñòàòüå.

 C#-àíàëèçàòîð áûë äîáàâëåí ó÷åò ïîìå÷åííûõ äàííûõ ïðè îáíàðóæåíèè áîëüøåãî êîëè÷åñòâà îøèáîê, íàïðèìåð, ïðè âûõîäå çà ãðàíèöó ìàññèâà, îïðåäåëåíèè ïåðåïîëíåíèÿ è ïîòåíöèàëüíîãî äåëåíèÿ íà 0; à òàêæå îïòèìèçèðîâàí àíàëèç áëîêîâ êîäà ñ áîëüøèì êîëè÷åñòâîì èäåíòèôèêàòîðîâ ïåðåìåííûõ (500 è áîëåå). Ðàíåå â ïîäîáíûõ ñèòóàöèÿõ áûëè âîçìîæíû çàìåäëåíèÿ àíàëèçàòîðà.

Óëó÷øàëè è äîðàáàòûâàëè ñàìûå ïåðâûå äèàãíîñòè÷åñêèå ïðàâèëà. Áûëè ïîääåðæàíû íîâûå êîíñòðóêöèè ÿçûêà, óëó÷øåíû ìåõàíèçìû PVS-Studio ïî âûÿâëåíèþ ïðîáëåì â êîäå. À â ïîñëåäíåì ðåëèçå 2025 ã. ïîääåðæàëè àíàëèç ïðîåêòîâ íà ñâåæåé âåðñèè .NET 10.

«Â 2025 ã. ìû óäåëèëè âðåìÿ ñîçäàíèþ ñïåöèàëèçèðîâàííûõ äèàãíîñòè÷åñêèõ ïðàâèë äëÿ ðàáîòû ñ ïðîåêòàìè íà îñíîâå Unity. Íà äàííûé ìîìåíò â C#-àíàëèçàòîðå áîëåå 20 ñïåöèàëèçèðîâàííûõ äèàãíîñòèê äëÿ âûÿâëåíèÿ ïðîáëåì îïòèìèçàöèè è îøèáîê îáùåãî íàçíà÷åíèÿ», — ñêàçàë ðóêîâîäèòåëü îòäåëà ðàçðàáîòêè C#-àíàëèçàòîðà Àðòåì Ðîâåíñêèé.

Ïîääåðæàëè çàãðóçêó ðåçóëüòàòîâ àíàëèçà â ASOC-ñèñòåìû. PVS-Studio çàêëþ÷èëè òåõíîëîãè÷åñêîå ïàðòíåðñòâî ñ ðàçëè÷íûìè ASOC-èíñòðóìåíòàìè. Òåïåðü àíàëèçàòîð ìîæíî ëåãêî âíåäðÿòü â êîíâåéåð ðàçðàáîòêè, èñïîëüçóÿ òå æå èíñòðóìåíòû, ÷òî è ðàíåå. Ðåçóëüòàòû àíàëèçà ìîæíî èíòåãðèðîâàòü â AppSecHub, Hexway, Securitm, CyberCodeReview è TRON.ASOC.

PVS-Studio ñîîòâåòñòâóåò ÃÎÑÒ Ð 71207-2024. Åùå 2024 ã. â ïëàãèíàõ PVS-Studio äëÿ Visual Studio è Visual Studio Code ïîÿâèëàñü âîçìîæíîñòü âêëþ÷èòü îòîáðàæåíèå ñïåöèàëüíûõ SAST-èäåíòèôèêàòîðîâ, îòîáðàæàþùèõ ïðèíàäëåæíîñòü ñðàáàòûâàíèÿ ê êàòåãîðèÿì êðèòè÷åñêèõ îøèáîê èç ÃÎÑÒ Ð 71207-2024. Ïðèîðèòåçàöèÿ èñïðàâëåíèÿ òàêèõ ñðàáàòûâàíèé âàæíà äëÿ ñïåöèàëèñòîâ, êîòîðûå òùàòåëüíî ñëåäÿò çà âûïîëíåíèåì òðåáîâàíèé èíôîðìàöèîííîé áåçîïàñíîñòè, à òàêæå äëÿ ñîáëþäåíèÿ ïðîöåññà ðàçðàáîòêè áåçîïàñíîãî ÏÎ.

 2025 ã. ïîäîáíûé ôóíêöèîíàë ïîÿâèëñÿ â ïëàãèíå äëÿ SonarQube è â ôàéëàõ êîíôèãóðàöèè àíàëèçà `.pvsconfig`.

Ïåðåðàáîòàíà êîíöåïöèÿ, ïî êîòîðîé àíàëèçàòîð ïîìå÷àåò ñðàáàòûâàíèÿ êàê êðèòè÷åñêèå ïî ÃÎÑÒó. Ðàíåå îäíî ïðàâèëî ÷åòêî ñîîòâåòñòâîâàëî îäíîìó èäåíòèôèêàòîðó êðèòè÷åñêèõ îøèáîê. Òåïåðü ïîäõîä ñòàë äèíàìè÷åñêèì: îäíî ïðåäóïðåæäåíèå àíàëèçàòîðà ìîæåò îòíîñèòüñÿ ê íåñêîëüêèì êàòåãîðèÿì êðèòè÷åñêèõ îøèáîê.

Ïîìèìî ÃÎÑÒ çàíèìàëèñü ïîêðûòèåì ñòàíäàðòà OWASP.  2025 ãîäó ìû ïðîâåëè áîëüøèå ðàáîòû ïî ïîêðûòèþ Java-àíàëèçàòîðîì êàòåãîðèé äåôåêòîâ áåçîïàñíîñòè èç OWASP Top 10 2021, áûëî âûïóùåíî ìíîæåñòâî íîâûõ äèàãíîñòè÷åñêèõ ïðàâèë, öåëüþ êîòîðûõ ÿâëÿåòñÿ ïîèñê ïîòåíöèàëüíûõ óÿçâèìîñòåé.

«Ñåé÷àñ ìû ïîêðûâàåì 9 èç 10 êàòåãîðèé OWASP, à ê ñëåäóþùåìó (ôåâðàëüñêîìó) ðåëèçó â Java àíàëèçàòîðå áóäåò 40 security-äèàãíîñòèê», — ñêàçàë ðóêîâîäèòåëü îòäåëà ðàçðàáîòêè Java-àíàëèçàòîðà Êîíñòàíòèí Âîëîõîâñêèé.

Óëó÷øèëè ïîääåðæêó ñòàíäàðòîâ MISRA. Ìû íà÷àëè ðàáîòû ïî óëó÷øåíèþ ïîêðûòèÿ ñòàíäàðòà MISRA C 2023 äèàãíîñòè÷åñêèìè ïðàâèëàìè C è C++-àíàëèçàòîðà. Òåïåðü èíñòðóìåíò ïîääåðæèâàåò ãåíåðàöèþ îò÷åòà MISRA Compliance ñ ó÷åòîì íîâûõ âåðñèé ñòàíäàðòà. Ê ôåâðàëüñêîìó ðåëèçó PVS-Studio 7.41 ñòàíäàðò MISRA C 2023 áóäåò ïîêðûò íà 80-85%.

Óëó÷øèëè ïëàãèíû äëÿ ñðåä ðàçðàáîòêè.  Visual Studio 2026 ïîÿâèëñÿ ïëàãèí PVS-Studio, àíàëèçèðóþùèé Ñ, C++ è C#-ïðîåêòû íà îñíîâå ñáîðî÷íîé ñèñòåìû MSBuild.

Òàêæå èíñòðóìåíò ñòàë äîñòóïåí äëÿ áîëüøåãî êîëè÷åñòâà âåðñèé Qt Creator: òåïåðü åãî ìîæíî èñïîëüçîâàòü â 15, 16, 17 è 18 âåðñèÿõ ñðåäû ðàçðàáîòêè.

Ïîðòèðîâàëè ïëàãèí íà êîìïëåêò ðàçðàáîò÷èêà äëÿ ÎÑ «Íåéòðèíî» íà Windows. Èç íåãî ïîääåðæàíà ðàáîòà ñ Qt Creator 6 (Qt 5.14.2).

Ïðîåêòû íà Java òåïåðü ìîæíî àíàëèçèðîâàòü ñ ïîìîùüþ PVS-Studio â èíòåãðèðîâàííîé ñðåäå ðàçðàáîòêè OpenIDE.

Äîáàâèëè ìîíèòîðèíã êîìïèëÿöèè â ïëàãèí äëÿ Visual Studio Code.  ïëàãèíå PVS-Studio äëÿ ñðåäû ðàçðàáîòêè Visual Studio Code ïîÿâèëàñü âîçìîæíîñòü ïðîâîäèòü àíàëèç ïðîåêòîâ íà îñíîâå ìîíèòîðèíãà êîìïèëÿöèè.  òàêîì ðåæèìå ïëàãèí îòñëåæèâàåò çàïóñê ïðîöåññîâ, ñîîòâåòñòâóþùèõ öåëåâîìó êîìïèëÿòîðó, è ñîáèðàåò èíôîðìàöèþ îá èõ îêðóæåíèè. Çàòåì, ïîëó÷èâ âñþ íåîáõîäèìóþ èíôîðìàöèþ, ïëàãèí ìîæåò çàïóñòèòü àíàëèç ïðîåêòà. Ýòîò ôóíêöèîíàë äîñòóïåí òîëüêî íà Windows, íî ìû ïëàíèðóåì äîáàâèòü åãî è íà Linux.

Óëó÷øàëè ñóùåñòâóþùèå èíòåãðàöèè â ñáîðî÷íûå ñèñòåìû. Ïîÿâèëàñü âîçìîæíîñòü èñïîëüçîâàòü ñèíòàêñèñ Kotlin DSL ïðè íàïèñàíèè ñêðèïòîâ ñáîðêè äëÿ ñáîðî÷íîé ñèñòåìû Gradle, èñïîëüçóþùèõ ïëàãèí PVS-Studio. Ñîîòâåòñòâóþùàÿ èíñòðóêöèÿ ïîÿâèëàñü â äîêóìåíòàöèè.

Àíàëèçèðîâàòü ïðîåêòû íà îñíîâå ñáîðî÷íîé ñèñòåìû MSBuild òåïåðü ìîæíî ñ ïîìîùüþ ôàéëîâ ðåøåíèé ôîðìàòà `.slnf` è `.slnx`.

Ðàñøèðèëè âîçìîæíîñòè ïîëüçîâàòåëüñêèõ àííîòàöèé êîäà â ôîðìàòå JSON. Ñ 2024 ã. â àíàëèçàòîð ñòàëî ìîæíî äîáàâëÿòü ïîëüçîâàòåëüñêèå àííîòàöèè êîäà â ôîðìàòå JSON äëÿ C è C++-àíàëèçàòîðà. Â 2025 ã. òàêóþ æå âîçìîæíîñòü äîáàâèëè â Java è C#-àíàëèçàòîðû.

Àííîòàöèè äàþò àíàëèçàòîðó äîïîëíèòåëüíûé êîíòåêñò îá èñïîëüçîâàíèè ðàçëè÷íûõ ñóùíîñòåé, ïîçâîëÿÿ óëó÷øèòü êà÷åñòâî àíàëèçà.

Äîáàâèëè íîâûé ôóíêöèîíàë â ôàéëàõ êîíôèãóðàöèè àíàëèçà `.pvsconfig`.

 êðîññïëàòôîðìåííóþ óòèëèòó äëÿ ïðîâåðêè C è C++-ïðîåêòîâ `pvs-studio-analyzer` áûë äîáàâëåí íîâûé ôëàã `--apply-pvs-configs`. Ñ ïîìîùüþ íåãî âêëþ÷àåòñÿ ðåæèì àâòîìàòè÷åñêîãî ïîèñêà è ïðèìåíåíèÿ ôàéëîâ êîíôèãóðàöèè àíàëèçà `.pvsconfig` äëÿ ïðîâåðÿåìûõ èñõîäíûõ ôàéëîâ.

Áûë äîáàâëåí ìåõàíèçì ïåðåçàïèñè áîëåå ïðèîðèòåòíûõ íàñòðîåê ñ ïîìîùüþ `//V_OVERRIDE ON`. Ýòà îïöèÿ ïîçâîëÿåò ïîääåðæèâàòü ñëîæíûå ñöåíàðèè.

Ðàáîòàëè íàä óëó÷øåíèåì äîêóìåíòàöèè èíñòðóìåíòà. Íàïðèìåð, äîêóìåíòàöèÿ ïî èñïîëüçîâàíèþ àíàëèçàòîðà äëÿ àíàëèçà Unreal Engine-ïðîåêòîâ äîïîëíèëàñü ðàçäåëîì ïðî àíàëèç ñ èñïîëüçîâàíèåì ñèñòåìû ðàñïðåäåëåííîé ñáîðêè Unreal Build Accelerator.

Ïîëíîñòüþ ïåðåðàáîòàëè äîêóìåíòàöèþ îá èñïîëüçîâàíèè ïëàãèíà PVS-Studio äëÿ èíòåãðèðîâàííîé ñðåäû ðàçðàáîòêè Visual Studio Code.

Êîììåíòàðèè