ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΡΠ°Π±ΠΎΡΠ°Π²ΡΠΈΠΉ Ρ C ΠΈΠ»ΠΈ C++, Ρ ΠΎΡΡ Π±Ρ ΡΠ°Π· ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ Π»ΡΠ³ΠΊΠΎΠ΅ ΡΡΠ²ΡΡΠ²ΠΎ ΠΏΠ°Π½ΠΈΠΊΠΈ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡΡΠ°ΡΠ½ΠΈΡ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΡΠΌΠΈ Π²ΡΠ²ΠΎΠ΄Π°ΠΌΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΈΠ»ΠΈ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠΌΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΌΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°. Π ΡΡΠ°ΡΡΡΡ, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² GCC 15 ΡΠ΅ΡΠΈΠ»Π° Π½Π°ΠΊΠΎΠ½Π΅Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΠΆΠΈΠ·Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»Π° ΡΠ΅Π»ΡΡ ΡΠ΅ΡΠΈΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΡΡΠ½Π΅Π΅.
ΠΠΎΡ ΡΡΠΎ ΠΆΠ΄ΡΡ Π½Π°Ρ Π² Π½ΠΎΠ²ΠΎΠΌ ΡΠ΅Π»ΠΈΠ·Π΅ GCC:
π¨ 1. ΠΡΠ°ΡΠΈΠ²ΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΡΠ΅ΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (Execution Paths)
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°ΡΡΠΈΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°ΠΌΠΈ β ΡΡΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΡΡΠΈΡΠ°Π΅Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΠ°ΡΠ½ΡΠΌ. Π GCC 15 ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΎΠ±Π·Π°Π²ΡΠ»ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌΠΈ ASCII-Π³ΡΠ°ΡΠΈΠΊΠ°ΠΌΠΈ ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΌΠΎΠ΄Π·ΠΈ-ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°:
while (n) // β οΈ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ» Π·Π΄Π΅ΡΡ
{
sum += n->val;
// ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΈΡΠΊΠ°!
}
Π’Π΅ΠΏΠ΅ΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π°ΡΠ°Π»ΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ», Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠΊΠΈΡ ΡΡΡΠ΅Π»ΠΎΡΠ΅ΠΊ ΠΈ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠΉ. ΠΡΠΎ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΡΠ°Π³ Π²ΠΏΠ΅ΡΡΠ΄ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠΎΡΡΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ.
π¦ 2. ΠΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π΄Π»Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² C++
ΠΡΠ±ΠΎΠΉ, ΠΊΡΠΎ Ρ ΠΎΡΡ ΡΠ°Π· ΡΠ°Π·Π±ΠΈΡΠ°Π»ΡΡ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π°Ρ C++, Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΈΠ΅ΡΠΎΠ³Π»ΠΈΡΡ Π΄ΡΠ΅Π²Π½Π΅Π³ΠΎ ΠΌΠ°Π½ΡΡΠΊΡΠΈΠΏΡΠ°. Π’Π΅ΠΏΠ΅ΡΡ GCC 15 Π²Π²ΠΎΠ΄ΠΈΡ Π½ΠΎΠ²ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ, Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»ΡΠ½Π½ΡΠΉ ΠΈΠ΄Π΅ΡΠΌΠΈ Sy Brand ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΉ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° GCC ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π΅ ΠΏΠΎΠ΄ΠΎΡΡΠ»:
- π ΠΠ°Π½Π΄ΠΈΠ΄Π°Ρ 1: Π½Π΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΡΠΈΠΏ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°
- π ΠΠ°Π½Π΄ΠΈΠ΄Π°Ρ 2: Π½Π΅Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
- π ΠΠ°Π½Π΄ΠΈΠ΄Π°Ρ 3: Π½Π΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠ° (drawable)
ΠΡΠΎ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²ΡΠ΅ΠΌΡ ΠΈ Π½Π΅ΡΠ²Ρ ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅.
π§βπ» 3. ΠΠ°ΡΠΈΠ½ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠ΅ ΠΎΡΡΡΡΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ (ΡΠΎΡΠΌΠ°Ρ SARIF)
Π Π°Π½Π΅Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ: Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈΠ»ΠΈ Π² ΠΌΠ°ΡΠΈΠ½ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ SARIF. Π’Π΅ΠΏΠ΅ΡΡ GCC 15 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ!
ΠΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² CI/CD ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ:
- π Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΠΈ SARIF-ΡΠΎΡΠΌΠ°ΡΠ°Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
- π οΈ Π ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ sarif-replay, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΈΡΠ°Π΅Ρ SARIF-ΡΠ°ΠΉΠ»Ρ ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΈΡ Π²ΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΊΠ°ΠΊ ΡΠΎΠ΄Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ GCC.
π 4. Π£ΠΏΡΠΎΡΡΠ½Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡ C23
GCC 15 ΠΏΠ΅ΡΠ΅ΡΡΠ» ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡ C23 (Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π±ΡΠ» C17). ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎΡΡΠΎΠΌΡ Π² GCC 15:
- π§ ΠΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΡΡΠΊΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΠΈΠΏ bool.
- π’ Π£ΡΠΎΡΠ½Π΅Π½Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π±Π΅Π· ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΡΠΊΠΎ ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠ΅Ρ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ»ΠΎΠΌΠ°Π»ΠΎΡΡ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ.
π 5. Π£Π»ΡΡΡΠ΅Π½Π½Π°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ Π΅ΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡΠΈΠ±ΠΎΠΊ
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ GCC Π½Π°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠ²Π΅ΡΠΎΠ²ΡΠΌ ΡΡ Π΅ΠΌΠ°ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΈΠ²Π°ΡΡΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ²Π΅ΡΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ° Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΈ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ , ΠΎΠ±Π° ΡΠΈΠΏΠ° Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΅Π½Ρ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ½ΡΠΌΠΈ ΡΠ²Π΅ΡΠ°ΠΌΠΈ:
- π’ Π’ΠΈΠΏ ΡΠ»Π΅Π²Π°
- π΅ Π’ΠΈΠΏ ΡΠΏΡΠ°Π²Π°
ΠΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΠΎΡΠΏΡΠΈΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΎΡΠ»Π°Π΄ΠΊΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ Π±Π΅Π³Π»ΠΎΠΌ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ Π»ΠΎΠ³ΠΎΠ².
π 6. ΠΠΎΠ²Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° libgdiagnostics Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π² GCC 15 ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π½ΠΎΠ²Π°Ρ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° libgdiagnostics, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅ΡΡ Π°ΡΡΠ΅Π½Π°Π» Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°:
- π Python ΠΈ C++ API Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ
- ποΈ ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°, Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄Π°, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ (fix-it hints) ΠΈ SARIF-Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, IDE ΠΈ Π»ΠΈΠ½ΡΠ΅ΡΡ ΡΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ GCC, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΠ² ΠΈ ΠΎΠ±Π»Π΅Π³ΡΠΈΠ² ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ.
π‘ ΠΠΈΡΠ½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΡΠ°
ΠΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Ρ C ΠΈ C++, ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π² GCC 15 Π΄Π°Π²Π½ΠΎ Π½Π°Π·ΡΠ΅Π»ΠΈ ΠΈ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π²Π°ΠΆΠ½Ρ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ°Π΄ΡΠ΅Ρ ΡΠ°Π³ Π½Π°Π²ΡΡΡΠ΅ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ . ΠΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π½Π°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΊΡΠ°ΡΠ°ΡΡΡΡ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡ C23 ΠΈ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΡ ΡΡΠ°ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
Π’Π°ΠΊΠΆΠ΅ ΠΎΡΠΊΡΡΡΠΈΠ΅ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ libgdiagnostics β ΡΡΠΎ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΡΠ°Π³ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΌΠΎΠ³ΡΡ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π΅ΡΡ ΠΌΠΎΡΠ½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» GCC Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΡ.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ GCC 16 ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π² ΡΡΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠ°Π½Π΅Ρ Π΅ΡΡ Π΄ΡΡΠΆΠ΅Π»ΡΠ±Π½Π΅Π΅ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ.
π ΠΡΠ²ΠΎΠ΄Ρ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ GCC 15, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ ΡΡΠ°Π½Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½. Π ΠΏΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ΡΡΠ²Π° Π½Π° ΡΠ°ΠΉΡΠ΅ Compiler Explorer.
Π‘ΡΠ°ΡΡΠ»ΠΈΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ Π½ΠΎΠ²ΡΠΌ GCC! π
π Π‘ΡΡΠ»ΠΊΠΈ:
- Compiler Explorer (Godbolt) β ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π½ΠΎΠ²ΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΏΡΡΠΌΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅.