История изменений
Исправление Deleted, (текущая версия) :
Оптимальность выбора достаточно сильно зависит от контекста.
Как мне кажется, лучшим вариантов будет совместное использование двух - Covery и PVS.
https://scan.coverity.com/ доступен бесплатно для open-source проектов и особенно удобен для больших проектов, с большой командой. Основная «фишка» в web-интерфейсе с возможностью совместной работы над разными частями проекта и т.п. Кроме этого там есть некий workflow для выявленных проблем, с различной классификацией/приоритезаций и т.д. Т.е. Coverity «помнит» найденные проблемы на стороне сервера, соответственно false-positives можно погасить один раз, не загромождая код хинтами анализатора.
PVS же славится выявлением целого класса copy-paste ошибок и в целом несколько особенным набором эвристик. Буквально я не сравнивал, но по ощущениям PVS (как минимум) очень хорошо дополняет Coverity. Однако, я (пока) не готов утверждать что PVS превосходит Coverity в «среднем по больнице».
В отношении других анализаторов, я бы сформулировал так: При использовании Coverity+PVS остальные анализаторы находят примерно только какие-то стилистические ошибки, близкие к косметике. Т.е. их использование после Coverity+PVS конечно уменьшает вероятность что-либо пропустить, но это будет скорее перфекционизмом (что тоже не плохо).
Тем не менее, будет любопытно увидеть баг, который не был замечен ни Coverity, ни PVS, но был выявлен посредством cppcheck, clang-analyzer и т.д. На всякий - давайте не путать статический анализ с runtime (Valgrind, Address Saninizer, UB-sanitizer и т.п.).
Исправление Deleted, :
Оптимальность выбора достаточно сильно зависит от контекста.
Как мне кажется, лучшим вариантов будет совместное использование двух - Covery и PVS.
https://scan.coverity.com/ доступен бесплатно для open-source проектов и особенно удобен для больших проектов, с большой командой. Основная «фишка» в web-интерфейсе с возможностью совместной работы над разными частями проекта и т.п. Кроме этого там есть некий workflow для выявленных проблем, с различной классификацией/приоритезаций и т.д.
PVS же славится выявлением целого класса copy-paste ошибок и в целом несколько особенным набором правил. Буквально я не сравнивал, но по ощущениям PVS (как минимум) очень хорошо дополняет Coverity. Однако, я (пока) не готов утверждать что PVS превосходит Coverity в «среднем по больнице».
В отношении других анализаторов, я бы сформулировал так: При использовании Coverity+PVS остальные анализаторы находят примерно только какие-то стилистические ошибки, близкие к косметике. Т.е. их использование после Coverity+PVS конечно уменьшает вероятность что-либо пропустить, но это будет скорее перфекционизмом (что тоже не плохо).
Тем не менее, будет любопытно увидеть баг, который не был замечен ни Coverity, ни PVS, но был выявлен посредством cppcheck, clang-analyzer и т.д. На всякий - давайте не путать статический анализ с runtime (Valgrind, Address Saninizer, UB-sanitizer и т.п.).
Исходная версия Deleted, :
Оптимальность выбора достаточно сильно зависит от контекста.
Как мне кажется, лучшим вариантов будет совместное использование двух - Covery и PVS.
https://scan.coverity.com/ доступен бесплатно для open-source проектов и особенно удобен для больших проектов, с большой командой. Основная «фишка» в web-интерфейсе с возможностью совместной работы над разными частями проекта и т.п. Кроме этого там есть некий workflow для выявленных проблем, с различной классификацией/приоритезаций и т.д.
PVS же славится выявлением целого класса copy-paste ошибок и в целом несколько особенным набором правил. Буквально я не сравнивал, но по ощущениям PVS (как минимум) очень хорошо дополняет Coverity. Однако, я (пока) не готов утверждать что PVS превосходит Coverity в «среднем по больнице».
В отношении других анализаторов, я бы сформулировал так: При использовании Coverity+PVS остальные анализаторы находят примерно только какие-то стилистические ошибки, близкие к косметики. Т.е. их использование после Coverity+PVS конечно уменьшает вероятность что-либо пропустить, но это будет скорее перфекционизмом (что тоже не плохо).
Тем не менее, будет любопытно увидеть баг, который не был замечен ни Coverity, ни PVS, он был выявлен посредством cppcheck, clang-analyzer и т.д. На всякий - давайте не путать статический анализ с runtime (Valgrind, Address Saninizer, UB-sanitizer и т.п.).