얼마나 많은 개발자가 개발 중에 정적 코드 분석 도구를 사용하며 사용하는 도구에서 사용자가 경험하는 오 탐률의 양은 얼마입니까? 이것은 연구를위한 것입니다.정적 코드 분석 도구 -
답변
저는 2 년간 Coverity를 사용하고 있습니다. 지금까지 어떠한 거짓 긍정도 얻지 못했습니다.
이전에는 코드 소나를 사용했습니다. 나는 가끔 거짓 포지티브를 얻었습니다.
거짓 긍정을 본 적이 없다면 더 공격적이어야하고 더 많은 체커를 켜야합니다. –
시도해 볼 수 있습니다 CppDepend, CQLinq 코드 쿼리 언어를 사용하여 규칙을 정의합니다. 필요에 맞게 규칙을 쉽게 사용자 정의하고 오 탐지 분석을 제거 할 수 있습니다.
진지한 연구는 진정한 긍정 (정확도)에 대한 위양성 비율뿐만 아니라 도구에 의해보고되지 않는 위양성 (false negative) 비율도 비교합니다 (리콜). 내가 기대하는 바는, 오진 (false positive)이 적은 도구는 잘못된 위음성을 갖게된다는 것입니다.
위양성을 찾는 것이 사소한 것이 아닙니다. 테스트 스위트 (예 : https://www.nist.gov/publications/juliet-11-cc-and-java-test-suite)가 있지만 이는 합성 코드이며 여러 수준의 간접 지정과 복잡한 논리 흐름이있는 생산 수준 코드가 아닙니다.
행운을 빈다.
(프로젝트 특정 구성을 통해) 규칙을 점진적으로 추가 했으므로 오탐 (또는 내가 알고있는 방법을 잘 알고 있습니다)이 거의 없습니다. 표준 FingBugs 규칙 만 사용하면 오탐 (false positive)이 너무 많아 지므로 사람들이 일반적으로이 규칙을 사용하지 않게됩니다. 이 외에도 FindBugs contrib 규칙을 추가했습니다.
JavaScript의 경우 jsHint를 사용합니다.
가양 성은 활성 규칙에 달려 있습니다 ...이 사실로 인해 연구가 어려워 질까 봐 걱정됩니다.
대충 훑어 보면 훌륭한 상업용 정적 분석 도구는 20 %의 오탐 (false positive)을 가지며 실제 버그의 약 20 %를 찾습니다. 실제와 관련이있는 것은보고 된 결함 중 훨씬 높은 비율이 오 탐률로 잘못 분류된다는 것입니다. 종종 개발자가 버그가 발생하지 않을 것이라고 생각하기 때문에 잘못 판단하게됩니다. (FindBugs는 이에 대한 "가장 무해한"분류가 있습니다.) Dr. Dobb의 기사 인 http://pobox.com/~flash/Deploying_Static_Analysis.pdf에서 토론 및 참고 자료.
연구에 성공하려면 궁극적으로 노력을 기울여야합니다. –
EFL 코어 라이브러리의 예에 의한 PVS-Studio Analyzer의 특성, 오 탐지율의 10-15 % - https://www.viva64.com/en/b/0523/ – AndreyKarpov
나는 이것을 즉시 학기가 끝납니다. @ ThomasJensen의 제안에 감사드립니다 –