Dokonałem porównania między komercyjnymi i opensourceowymi narzędziami analizy kodu statycznego (SCAT) kilka lat wstecz. Klocwork był jednym z nich. Krótko mówiąc, wynik był taki, że w środowisku Java komercyjne narzędzia nie zapewniały (dodatkowej) wartości niezbędnej do uzasadnienia ich ceny. W liczbie znalezionych błędów findbugs był znacznie lepszy niż jakiekolwiek z tych narzędzi. Tylko pokrycie wykryło kilka błędów, których nie znaleziono na żadnym innym narzędziu i które miały najniższy poziom (FPR). Z drugiej strony, pokrowiec nie wykrył wielu błędów znalezionych przez findbugi - tak więc dla nas wszystkie narzędzia nie uzasadniały zaangażowanych pieniędzy. I jeśli skonfigurowany w prawo, findbugs zapewnia również bardzo niski FPR. W nowszej wersji coverity zawierał możliwość zintegrowania findbugów z ich rozwiązaniem. Mhmmmmm, dlaczego to zrobili? :-)
Istnieją jednak scenariusze np. kiedy używasz innych języków programowania lub scentralizowanych skanów językowych (np. twoja baza zawiera inne języki programowania (takie jak C, C++, C# ...)) lub potrzebujesz dodatkowych funkcjonalności dostarczanych przez te narzędzia - wtedy warto byłoby szukać w komercyjne narzędzia. Ale możesz sam zdecydować, ponieważ każde rozwiązanie można przetestować. Wejdź na ich stronę internetową i pobierz/poproś o próbę i spróbuj sam (może w międzyczasie wszystko się zmieniło?).
Sprawdziłem następujące narzędzia:
komercyjne:
- Coverity
- Klocwork
- Parasoft
- Cast
OpenSource:
Więc w końcu co zrobiliśmy? Zainstalowaliśmy darmowy sonar server, który łączy w sobie wiele narzędzi, takich jak findbugs, pmd, checkstyle, cobertura i tym podobne. Dzięki temu otrzymaliśmy bezpłatne rozwiązanie, które pod wieloma względami jest lepsze niż dostępne komercyjne narzędzia. A gdybym musiał iść komercyjną trasą, prawdopodobnie przyjrzałbym się uważnie (i nigdy więcej nie spojrzę na CAST).
[Aktualizacja] chodzi o twoje pytanie o wydajność - findbugs jest w stanie skanować ogromne codebases bez problemu (jeśli wystąpią problemy następnie umieszczać je w findbugs mailing list i będą ci pomóc). Pamiętam, że wtedy findbugs był również jednym z najszybszych narzędzi. Pokrycia na przykład potrzebne prawie 2 h do końca, podczas gdy findbugs został zrobiony w mniej niż 10 minut. Inne narzędzia, w których pomiędzy tymi liczbami.
Jeśli chodzi o skanowanie kodu C i C++, można spojrzeć na Splint i cppcheck. Są też inne wątki omawiające ten temat. Ale jak wspomniano, ponieważ findbugs jest tylko dla java i chcesz wykryć problemy językowe między programami, komercyjne narzędzia mogą mieć przewagę. W końcu, ponieważ findbugs jest bezpłatny - wystarczy uruchomić go w bazie kodu i sprawdzić, co się stanie - Twój projekt może z niego skorzystać! Następnie napraw znalezione błędy, a następnie wykonaj próbę z niektórymi komercyjnymi narzędziami - i w zależności od ilości znalezionych błędów i ceny, jaką zapłacisz, wyciągnij własne wnioski. Aby dać ci przykład: Jedno z narzędzi kosztuje "Linie kodu"/podzielone przez 10 (w $). Ale może się zdarzyć, że w danym przypadku można uzyskać zniżkę ;-)
[Aktualizacja II] jakieś ciekawe master thesis omawiania tego tematu. Główną częścią jest temat "findbugs", ale wspomina również o klockwork i coverity.
Głosowanie za blisko jako zbyt szerokie. –