НСзависна Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡ˜Π° ΠŸΠ’Π‘-Π‘Ρ‚ΡƒΠ΄ΠΈΠΎ (Π›ΠΈΠ½ΡƒΠΊ, Π¦++)

Π’ΠΈΠ΄Π΅ΠΎ сам ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΊΠΎΡ˜Ρƒ јС ΠŸΠ’Π‘ Π½Π°ΡƒΡ‡ΠΈΠΎ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΏΠΎΠ΄ Π›ΠΈΠ½ΡƒΠΊΠΎΠΌ ΠΈ ΠΎΠ΄Π»ΡƒΡ‡ΠΈΠΎ сам Π΄Π° јС испробам Π½Π° сопствСним ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚ΠΈΠΌΠ°. И Π΅Π²ΠΎ ΡˆΡ‚Π° јС ΠΈΠ· Ρ‚ΠΎΠ³Π° ΠΏΡ€ΠΎΠΈΠ·Π°ΡˆΠ»ΠΎ.


Π‘Π°Π΄Ρ€ΠΆΠΈΠ½Π°

  1. ΠŸΡ€ΠΎΠ·ΠΎΠ΄ΠΈΡ˜Π°
  2. ΠŸΡ€ΠΎΡ‚ΠΈΠ²
  3. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ
  4. АфтСрворд

ΠŸΡ€ΠΎΠ·ΠΎΠ΄ΠΈΡ˜Π°

Одзивна ΠΏΠΎΠ΄Ρ€ΡˆΠΊΠ°

Π—Π°Ρ‚Ρ€Π°ΠΆΠΈΠΎ сам ΠΏΡ€ΠΎΠ±Π½ΠΈ ΠΊΡ™ΡƒΡ‡ ΠΈ послали су ΠΌΠΈ Π³Π° истог Π΄Π°Π½Π°.

ΠŸΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ јасна Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°

УспСли смо Π΄Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅ΠΌΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π±Π΅Π· ΠΈΠΊΠ°ΠΊΠ²ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ΠŸΠΎΠΌΠΎΡ› Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΊΠΎΠ½Π·ΠΎΠ»Π΅ јС Ρ‚Π°ΠΊΠΎΡ’Π΅ доступна (ΠΈΠ°ΠΊΠΎ ΠΎΠ²Π΄Π΅ ΠΈΠΌΠ° Π½Π΅ΠΊΠΈΡ… ΠΏΡ€ΠΈΡ‚ΡƒΠΆΠ±ΠΈ, ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ˜Ρ‚Π΅ ΠΎΠ΄Π΅Ρ™Π°ΠΊ ΠŸΡ€ΠΎΡ‚ΠΈΠ²).

ΠœΠΎΠ³ΡƒΡ›Π½ΠΎΡΡ‚ Π²ΠΈΡˆΠ΅Π½ΠΈΡ‚Π½Π΅ Π°Π½Π°Π»ΠΈΠ·Π΅

Анализатор ΠΈΠΌΠ° "стандардну" ΠΎΠΏΡ†ΠΈΡ˜Ρƒ -j, ΡˆΡ‚ΠΎ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° сС Π°Π½Π°Π»ΠΈΠ·Π° спроводи ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ Ρƒ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π·Π°Π΄Π°Ρ‚Π°ΠΊΠ°. Ово ΡˆΡ‚Π΅Π΄ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π°.

Π”ΠΎΠ±Ρ€Π° Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°

Много Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΡ… ΠΈΠ·Π»Π°Π·Π½ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΎΠ΄ тСкста Π΄ΠΎ ΠΌΠ°Π»ΠΎΠ³ Π²Π΅Π±Π°. Π’Π΅Π± ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ јС Π·Π³ΠΎΠ΄Π°Π½, ΠΊΠΎΠ½Ρ†ΠΈΠ·Π°Π½, са Π½Π°Π³ΠΎΠ²Π΅ΡˆΡ‚Π°Ρ˜ΠΈΠΌΠ° ΠΏΠΎΡ€Π΅Π΄ Ρ€Π΅Π΄ΠΎΠ²Π° Ρƒ ΠΊΠΎΠ΄Ρƒ ΠΈ Π²Π΅Π·Π°ΠΌΠ° Π΄ΠΎ Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΡ‡ΠΊΠΈΡ… описа.

ΠˆΠ΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Ρƒ склоп

Π‘Π²Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° јС Π½Π° ΡšΠΈΡ…ΠΎΠ²ΠΎΡ˜ Π²Π΅Π± страници, ΠΌΠΎΠ³Ρƒ само Ρ€Π΅Ρ›ΠΈ Π΄Π° Π°ΠΊΠΎ јС ваш ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ Π½Π°ΠΏΡ€Π°Π²Ρ™Π΅Π½ ΠΏΠΎΠΌΠΎΡ›Ρƒ ЦМакС-Π°, ΠΎΠ½Π΄Π° јС свС Π²Ρ€Π»ΠΎ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ.

Π”ΠΎΠ±Ρ€ΠΈ Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΡ‡ΠΊΠΈ описи

Ако Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠ΅Ρ‚Π΅ ΠΈΠ·Π»Π°Π· Ρƒ Ρ€Π΅ΠΆΠΈΠΌΡƒ fullhtml, ΠΎΠ½Π΄Π° свака ΠΏΠΎΡ€ΡƒΠΊΠ° ΠΈΠΌΠ° Π²Π΅Π·Ρƒ Π΄ΠΎ Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΡ‡ΠΊΠΎΠ³ описа, са објашњСњима, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΠΌΠ° ΠΊΠΎΠ΄Π° ΠΈ Π΄ΠΎΠ΄Π°Ρ‚Π½ΠΈΠΌ Π²Π΅Π·Π°ΠΌΠ°.

ΠŸΡ€ΠΎΡ‚ΠΈΠ²

НСпознавањС јСзика Π¦++ ΠΎΠ΄ странС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°

НаТалост, ΠŸΠ’Π‘ ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ ΠΏΡ€Π°Π²ΠΈ синтаксичкС Π³Ρ€Π΅ΡˆΠΊΠ΅ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠ΅ Π»Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½Π΅ ΠΏΠΎΡ€ΡƒΠΊΠ΅ ΠΊΠ°Π΄Π° јС ΠΊΠΎΠ΄ ΠΏΠΎΡ‚ΠΏΡƒΠ½ΠΎ исправан.

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° која Π²Ρ€Π°Ρ›Π° void:

template <typename T>
auto copy (const void * source, void * destination)
    ->
        std::enable_if_t
        <
            std::is_copy_constructible<T>::value
        >
{
    new (destination) T(*static_cast<const T *>(source));
}

Π”Π°, ΠΊΡ™ΡƒΡ‡Π½Π° Ρ€Π΅Ρ‡ auto МоТС Π·Π½Π°Ρ‡ΠΈΡ‚ΠΈ void, Π·Π° Ρ‚ΠΎ јС Π°ΡƒΡ‚ΠΎ. Али ΠŸΠ’Π‘ јС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΎ слСдСћС ΠΏΠΎΡ€ΡƒΠΊΠ΅:

dynamic_tuple_management.hpp:29:1: error: V591 Non-void function should return a value.
dynamic_tuple_management.hpp:29:1: error: V2542 Function with a non-void return type should return a value from all exit paths.

Π’Π΅ΠΎΠΌΠ° спор ΡΠ°Ρ˜Ρ‚

Π”Π°, Ρƒ Π²Π΅Π± ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΡƒ ΠΏΠΎΡ€Π΅Π΄ свакС ΠΏΠΎΡ€ΡƒΠΊΠ΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ Π²Π΅Π·Π° Π΄ΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›Π΅Π³ Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΡ‡ΠΊΠΎΠ³ описа са ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΠΌΠ°. Али ΠΊΠ°Π΄Π° ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° Π²Π΅Π·Ρƒ, ΠΌΠΎΡ€Π°Ρ‚Π΅ Ρ‡Π΅ΠΊΠ°Ρ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ Π΄ΡƒΠ³ΠΎ, Π° ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ сС ΠΈ Π΄ΠΎΠ³ΠΎΠ΄ΠΈ 504 Π“Π°Ρ‚Π΅Π²Π°ΠΈ Π’ΠΈΠΌΠ΅-ΠΎΡƒΡ‚.

ЈСзик

Π‘Π²ΠΈ описи су Π½Π° руском, ΡˆΡ‚ΠΎ јС ΠΎΠ΄Π»ΠΈΡ‡Π½ΠΎ. Али Π²Π΅Π·Π΅ ΠΈΠ· ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜Π° ΡƒΠ²Π΅ΠΊ Π²ΠΎΠ΄Π΅ Π΄ΠΎ СнглСскС Π²Π΅Ρ€Π·ΠΈΡ˜Π΅. Π‘ΠΈΠ»ΠΎ Π±ΠΈ Π»Π΅ΠΏΠΎ Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ јСзик Ρ‚Π°ΠΊΠΎ Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ΄ΠΌΠ°Ρ… Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΠΊΡƒ Π½Π° руском. Нисам нашао Ρ‚Π°ΠΊΠ²Ρƒ ΠΎΠΏΡ†ΠΈΡ˜Ρƒ Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΡƒ.

НСзгодно јС Ρ€Π°Π΄ΠΈΡ‚ΠΈ са Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΡ‡ΠΊΠΈΠΌ Π½ΠΈΠ²ΠΎΠΈΠΌΠ° ΠΏΡ€Π΅ΠΊΠΎ ΠΊΠΎΠ½Π·ΠΎΠ»Π΅

ΠŸΠΎΡ‡Π½ΠΈΠΌΠΎ са Ρ‡ΠΈΡšΠ΅Π½ΠΈΡ†ΠΎΠΌ Π΄Π° су Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ којС сС користС (ΠΎΠ²ΠΎ pvs-studio-analyzer ΠΈ plog-converter) Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ Π·Π° ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΠΊΠ΅.

ΠŸΠΎΠΌΠΎΡ› Π·Π° pvs-studio-analyzer гласи:

-a [MODE], --analysis-mode [MODE]
    MODE defines the type of warnings:
    1 - 64-bit errors;
    2 - reserved;
    4 - General Analysis;
    8 - Micro-optimizations;
    16 - Customers Specific Requests;
    32 - MISRA.
    Modes can be combined by adding the values
    Default: 4

ΠŸΡ€ΠΎΠ²Π΅ΠΎ сам Π΄ΡƒΠ³ΠΎ ΠΏΠΎΠΊΡƒΡˆΠ°Π²Π°Ρ˜ΡƒΡ›ΠΈ Π΄Π° схватим Π³Π΄Π΅ Π΄Π° ΠΈΠ΄Π΅ΠΌ Π°Π΄Π΄ (β€žΠ΄ΠΎΠ΄Π°Π²Π°ΡšΠ΅ Π²Ρ€Π΅Π΄Π½ΠΎΡΡ‚ΠΈβ€œ). ΠŸΠΎΠΊΡƒΡˆΠ°ΠΎ сам Π΄Π° ΠΈΡ… Π½Π°Π²Π΅Π΄Π΅ΠΌ одвојСнС Π·Π°Ρ€Π΅Π·ΠΈΠΌΠ°:

pvs-studio-analyzer analyze ... -a 1,4,16

ΠŸΠΎΠΊΡƒΡˆΠ°ΠΎ сам Π΄Π° Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΡƒΡ˜Π΅ΠΌ ΠΊΡ™ΡƒΡ‡ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΏΡƒΡ‚Π°:

pvs-studio-analyzer analyze ... -a 1 -a 4 -a 16

И Ρ‚Π΅ΠΊ Ρ‚Π°Π΄Π° сам схватио Π΄Π° су Ρ‚ΠΎ Π±ΠΈΠ»Π΅ Π±ΠΈΡ‚Π½Π΅ маскС! И Ρ‚Ρ€Π΅Π±Π° Ρ‚ΠΈ ΡΡƒΠΌΠΈΡ€Π°Ρ˜Π˜ Π½Π΅ Π°Π΄Π΄ Π·Π½Π°Ρ‡Π΅ΡšΠ°. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π° бистС Π΄ΠΎΠ±ΠΈΠ»ΠΈ ΠΎΠΏΡˆΡ‚Ρƒ Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΠΊΡƒ, Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΠΊΡƒ Π·Π° ΠΌΠΈΠΊΡ€ΠΎΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π΅ ΠΈ МИБРА, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° ΠΈΡ… сумиратС (4 + 8 + 32 = 44):

pvs-studio-analyzer analyze ... -a 44

ΠšΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ битмаски Ρƒ корисничким ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΈΠΌΠ° јС Π³Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ лош ΠΎΠ±Π»ΠΈΠΊ. Π‘Π²Π΅ ΠΎΠ²ΠΎ Π±ΠΈ сС ΠΌΠΎΠ³Π»ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΎ сумирати, Π° кориснику Π±ΠΈ сС ΠΌΠΎΠ³Π°ΠΎ поставити сСт заставица.

ΠŸΠΎΡ€Π΅Π΄ Ρ‚ΠΎΠ³Π°, ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΈ услуТни ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌ plog-converter, који Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ статичкС Π°Π½Π°Π»ΠΈΠ·Π΅ којС су Ρ‡ΠΈΡ‚Ρ™ΠΈΠ²Π΅ Π·Π° Ρ™ΡƒΠ΄Π΅. Она ΠΈΠΌΠ° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

ΠŸΠΎΠΌΠΎΡ› Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌ plog-converter ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜ΠΈ:

-a, --analyzer            Specifies analyzer(s) and level(s) to be
                          used for filtering, i.e.
                          'GA:1,2;64:1;OP:1,2,3;CS:1;MISRA:1,2'
                          Default: GA:1,2

ОвдС су сС појавили Π½Π΅ΠΊΠΈ β€žΠ½ΠΈΠ²ΠΎΠΈβ€œ ΠΊΠΎΡ˜ΠΈΡ… Ρ€Π°Π½ΠΈΡ˜Π΅ нијС Π±ΠΈΠ»ΠΎ, Π° Π½ΠΈ Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜ΠΈ нисам нашао Π½ΠΈΡˆΡ‚Π° ΠΎ њима.

Π“Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, нијС јасно. Π—Π°Ρ‚ΠΎ сам свС поставио Π½Π° максимум.

Π“ΠΎΠΌΠΈΠ»Π° Π³Π»ΡƒΠΏΠΈΡ… псовки Π½Π° Π¦Π°Ρ‚Ρ†Ρ…

Π”Π²Π° ΠΎΠ΄ Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° која сам Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΎ користС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π·Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ Ρ˜Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Π¦Π°Ρ‚Ρ†Ρ…ΠšΠ‘ΠΠ£ΠœΠšΠ‘. А лавовски Π΄Π΅ΠΎ ΠΏΠΎΡ€ΡƒΠΊΠ° (!!! 90 ΠΎΠ΄ 138 Ρƒ јСдној ΠΈ 297 ΠΎΠ΄ 344 Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ˜!!!) ΠΈΠΌΠ° слСдСћи ΠΎΠ±Π»ΠΈΠΊ:

НСзависна Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡ˜Π° ΠŸΠ’Π‘-Π‘Ρ‚ΡƒΠ΄ΠΈΠΎ (Π›ΠΈΠ½ΡƒΠΊ, Π¦++)

НС ΡƒΠ·ΠΈΠΌΠ° Ρƒ ΠΎΠ±Π·ΠΈΡ€ ΠΌΡƒΠ»Ρ‚ΠΈΡ‚Ρ…Ρ€Π΅Π°Π΄ΠΈΠ½Π³

ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π°ΠΆΠ½ΠΈΡ… ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎ Π½Π°Π²ΠΎΠ΄Π½ΠΎ Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΈΠΌ Π²Π°Ρ€ΠΈΡ˜Π°Π±Π»Π°ΠΌΠ° ΠΈΠ»ΠΈ бСсконачним ΠΏΠ΅Ρ‚Ρ™Π°ΠΌΠ°, Π΄ΠΎΠΊ сС Ρ€Π°Π΄ са ΠΎΠ²ΠΈΠΌ Π²Π°Ρ€ΠΈΡ˜Π°Π±Π»Π°ΠΌΠ° одвија ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΡ… Π½ΠΈΡ‚ΠΈ, Π° Π΄Π° Ρ‚ΠΎ нијС Ρ‚Π°ΠΊΠΎ, Ρ˜Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΈ тСстови Π½Π΅ Π±ΠΈ функционисали.

НСзависна Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡ˜Π° ΠŸΠ’Π‘-Π‘Ρ‚ΡƒΠ΄ΠΈΠΎ (Π›ΠΈΠ½ΡƒΠΊ, Π¦++)

ΠœΠ΅Ρ’ΡƒΡ‚ΠΈΠΌ, ΠΌΠΎΠΆΠ΅ Π»ΠΈ статички Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Ρ‚ΠΎ ΡƒΠΎΠΏΡˆΡ‚Π΅ ΡƒΠ·Π΅Ρ‚ΠΈ Ρƒ ΠΎΠ±Π·ΠΈΡ€? НС Π·Π½Π°ΠΌ.

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ

ΠŸΠ’Π‘ нијС ΠΏΡ€ΠΎΠ½Π°ΡˆΠ°ΠΎ Π½ΠΈΠΊΠ°ΠΊΠ²Π΅ ΠΏΡ€Π°Π²Π΅ Π³Ρ€Π΅ΡˆΠΊΠ΅ Ρƒ мојим ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚ΠΈΠΌΠ° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΎΠ³ ΠΊΠΎΠ΄Π° Бурст ΠΈ ΠΏΡ€ΠΎΠΊΠΈΠΌΠ°, ΠΊΠ°ΠΎ ΠΈ Ρƒ Ρ€Π°Π΄Π½ΠΎΠΌ Π½Π°Ρ†Ρ€Ρ‚Ρƒ, који ΠΈΠ· ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΈΡ… Ρ€Π°Π·Π»ΠΎΠ³Π° Π½Π΅ ΠΌΠΎΠ³Ρƒ Π΄Π° прСдставим. Π˜ΡΡ‚ΠΈΠ½Π°, Π²Ρ€Π΅Π΄ΠΈ ΠΈΠΌΠ°Ρ‚ΠΈ Π½Π° ΡƒΠΌΡƒ Π΄Π° су Π½Π΅ΠΊΠΈ нСдостаци Π²Π΅Ρ› ΡƒΡ…Π²Π°Ρ›Π΅Π½ΠΈ ΠΈ исправљСни Ρ€Π°Π½ΠΈΡ˜Π΅ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ΠΌ Π¦ΠΏΠΏΡ†Ρ…Π΅Ρ†ΠΊ ΠΈ scan-build.

Π“Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, утисак са свих ΠΎΠ²ΠΈΡ… Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° јС ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ исти: Π΄Π°, ΠΎΠ½ΠΈ Π½Π΅ΡˆΡ‚ΠΎ ΡƒΡ…Π²Π°Ρ‚Π΅, ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ Ρ‡Π°ΠΊ ΠΈ Π½Π΅ΡˆΡ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, Π°Π»ΠΈ Π³Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ јС Π΄ΠΎΠ²ΠΎΡ™Π°Π½.

ΠœΠΎΠ³ΡƒΡ›Π΅ јС (Π° ја Π»ΠΈΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎ мислим) Π΄Π° наш Ρ‚ΠΈΠΌ користи праксС Ρ€Π°Π·Π²ΠΎΡ˜Π° софтвСра којС Π½Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π°Ρ˜Ρƒ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠ΅ΠΌΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Ρƒ ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Ρƒ усраног ΠΊΠΎΠ΄Π°. Π‘ΠΎΡ™Π΅ јС Π½Π΅ стварати ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ Π½Π΅Π³ΠΎ ΠΈΡ… Ρ…Π΅Ρ€ΠΎΡ˜ΡΠΊΠΈ ΠΏΡ€Π΅Π²Π°Π·ΠΈΠ»Π°Π·ΠΈΡ‚ΠΈ.

Π—Π±ΠΎΠ³ Ρ‚ΠΎΠ³Π°, ΡƒΠ·ΠΈΠΌΠ°ΠΌ сСби слободу Π΄Π° Π΄Π°ΠΌ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ савСта ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρƒ Π¦++ Ρ‚Π°ΠΊΠΎ Π΄Π° Π½ΠΈΠΊΠΎΠΌΠ΅ Π½Π΅ ΠΎΡ‚ΠΊΠΈΠ½Π΅Ρ‚Π΅ Π½ΠΎΠ³Π΅ ΠΈ Π½Π΅ ΡƒΠ΄Π°Ρ€ΠΈΡ‚Π΅ Π³Ρ€Π°Π±Ρ™Π°ΠΌΠ° Ρƒ Ρ‡Π΅Π»ΠΎ.

Π˜ΡΠΊΠΎΡ€ΠΈΡΡ‚ΠΈΡ‚Π΅ Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΠΊΡƒ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€Π° Π½Π° Π½Π°Ρ˜Π±ΠΎΡ™ΠΈ Π½Π°Ρ‡ΠΈΠ½

Наш Ρ‚ΠΈΠΌ користи (ΠΈ ΡΠ°Π²Π΅Ρ‚ΡƒΡ˜Π΅ Π²Π°ΠΌ) слСдСћС ΠΎΠΏΡ†ΠΈΡ˜Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Π΅:

-Werror

-Wall
-Wextra
-Wpedantic

-Wcast-align
-Wcast-qual
-Wconversion
-Wctor-dtor-privacy
-Wenum-compare
-Wfloat-equal
-Wnon-virtual-dtor
-Wold-style-cast
-Woverloaded-virtual
-Wredundant-decls
-Wsign-conversion
-Wsign-promo

ΠžΠΌΠΎΠ³ΡƒΡ›ΠΈΡ‚Π΅ ΠΈΡ… Ρƒ свом ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Ρƒ ΠΈ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ свом ΠΊΠΎΠ΄Ρƒ.

Π”Ρ€ΠΆΠΈΡ‚Π΅ сС стандарда

ΠŸΠΎΠΊΡƒΡˆΠ°Ρ˜Ρ‚Π΅ Π΄Π° Π½Π΅ користитС ствари зависнС ΠΎΠ΄ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Π°ΠΊΠΎ ΠΏΠΎΡΡ‚ΠΎΡ˜Π΅ стандардни Π°Π½Π°Π»ΠΎΠ³ΠΈ, Π° Π°ΠΊΠΎ апсолутно Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Π΅Π· ΡšΠΈΡ…, ΡƒΠΌΠΎΡ‚Π°Ρ˜Ρ‚Π΅ ΠΈΡ… Ρƒ посСбнС Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π·Π° ΠΌΠ°ΠΊΡ€ΠΎΠ΅ (ΠΈΠ»ΠΈ Π½Π΅ΡˆΡ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ) ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ Π΄Π° сС ваш ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π° ΠΏΠΎΠ΄ Π½Π΅ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π½ΠΈΠΌ условима.

Π”Ρ€ΠΆΠΈΡ‚Π΅ сС стандарднС сСмантикС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π°

Π‘Π°Π±ΠΈΡ€Π°ΡšΠ΅ ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ ΡΠ°Π±ΠΈΡ€Π°ΡšΠ΅, мноТСњС ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ мноТСњС, ΠΏΠΎΠ·ΠΈΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ ΠΏΠΎΠ·ΠΈΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅, копија ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ копија, ношСњС ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ ношСњС, ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ ΠΈΡ‚Π΅Ρ€Π°Π±Π»Π΅, ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΡ€Π° ΠΈΠΌΠ°Ρ‚ΠΈ ΠΏΡ€ΠΎΠΌΠΎΡ†ΠΈΡ˜Ρƒ ++ ΠΈ Π΄Π΅Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€Π°ΡšΠ΅ *. И Ρ‚Π°ΠΊΠΎ Π΄Π°Ρ™Π΅ ΠΈ Ρ‚Π°ΠΊΠΎ Π΄Π°Ρ™Π΅.

Мислим Π΄Π° јС идСја јасна. ΠŸΠΎΡΡ‚ΠΎΡ˜Π΅ ΡƒΡ‚Π²Ρ€Ρ’Π΅Π½Π΅ ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΡ˜Π΅ којС нису ΠΎΠ±Π°Π²Π΅Π·ΡƒΡ˜ΡƒΡ›Π΅, Π°Π»ΠΈ којС сви корисници ΠΈ Ρ‡ΠΈΡ‚Π°ΠΎΡ†ΠΈ вашСг ΠΊΠΎΠ΄Π° ΠΎΡ‡Π΅ΠΊΡƒΡ˜Ρƒ Π΄Π° Π²ΠΈΠ΄Π΅. НС ΠΏΠΎΠΊΡƒΡˆΠ°Π²Π°Ρ˜Ρ‚Π΅ Π΄Π° Π½Π°Π΄ΠΌΡƒΠ΄Ρ€ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³Π΅, ΠΈΠ½Π°Ρ‡Π΅ Ρ›Π΅Ρ‚Π΅ Π½Π°Π΄ΠΌΡƒΠ΄Ρ€ΠΈΡ‚ΠΈ сСбС.

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠ°Ρ‚ΠΈΠ±ΠΈΠ»Π°Π½ ΠΊΠΎΠ΄

ΠŸΡ€Π΅ свСга, мислим Π½Π° стандардну Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Π’Π΅ΠΎΠΌΠ° јС ΠΏΠΎΠΆΠ΅Ρ™Π½ΠΎ Π΄Π° сС ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΈ Π²Π°ΡˆΠΈΡ… класа ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° ΠΌΠΎΠ³Ρƒ користити са стандардним ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠ° (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Боост).

Π‘Π»ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ˜Ρ‚Π΅ Π‘Π’Π› ΠΈ Боост ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠ΅. Π£Π· Ρ€Π΅Ρ‚ΠΊΠ΅ ΠΈΠ·ΡƒΠ·Π΅Ρ‚ΠΊΠ΅, Ρ‚Π°ΠΌΠΎ Ρ›Π΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ Π΄ΠΎΡΡ‚ΠΎΡ˜Π°Π½ ΡƒΠ·ΠΎΡ€.

Π˜ΡΠΊΠΎΡ€ΠΈΡΡ‚ΠΈΡ‚Π΅ свС Π°Π»Π°Ρ‚Π΅ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΎΠ³ ΠΊΠΎΠ΄Π°

Π—Π° исту статичку Π°Π½Π°Π»ΠΈΠ·Ρƒ, ΠΏΠΎΡΡ‚ΠΎΡ˜Π΅ најмањС Π΄Π²Π° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½Π° бСсплатна Π°Π»Π°Ρ‚Π° која сС ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ²Π΅Π·Π°Ρ‚ΠΈ само јСдном Π½Π° Π±ΠΈΠ»ΠΎ који ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ са ЦМакС Π±ΡƒΠΈΠ»Π΄ систСмом.

Π’ΠΈΡˆΠ΅ ΠΎ Ρ‚ΠΎΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΠΈ Ρƒ мојој нСдавној ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΈ.

АфтСрворд

На ΠΊΡ€Π°Ρ˜Ρƒ, ΠΆΠ΅Π»ΠΈΠΌ Π΄Π° нагласим Π΄Π° сС Π½Π΅ Π·Π°Π»Π°ΠΆΠ΅ΠΌ Π΄Π° сС Π½Π΅ користи ΠŸΠ’Π‘ ΠΈΠ»ΠΈ Π±ΠΈΠ»ΠΎ који Π΄Ρ€ΡƒΠ³ΠΈ статички Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. Али ΠΎΡ…Ρ€Π°Π±Ρ€ΡƒΡ˜Π΅ΠΌ вас Π΄Π° размислитС ΠΎ Ρ‚ΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ сС Π΄ΠΎΠ³ΠΎΠ΄ΠΈΠ»ΠΎ Π΄Π° статички Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ стално ΠΏΡ€ΠΎΠ½Π°Π»Π°Π·ΠΈ Π·Π½Π°Ρ‡Π°Ρ˜Π½Π΅ Π³Ρ€Π΅ΡˆΠΊΠ΅ Ρƒ вашСм ΠΊΠΎΠ΄Ρƒ.

Ово јС само послСдица. ΠœΠΎΡ€Π°ΠΌΠΎ Ρ‚Ρ€Π°ΠΆΠΈΡ‚ΠΈ ΠΈ Слиминисати ΡƒΠ·Ρ€ΠΎΠΊ.

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€