과제: C++ 코드에서 오류를 발견할 수 있습니까?
2133 단어 challengecppcommunityprogramming
코드 분석기는 끊임없이 오류를 검색합니다. 눈에 잘 띄지 않는 것들도 찾을 수 있습니다. PVS-Studio가 오류를 발견한 여러 코드 조각을 선택했습니다. 모든 조각은 open-source projects에서 가져온 것입니다.
우리는 당신이 우리의 분석기와 경쟁하고 이러한 오류를 직접 찾을 것을 권장합니다! 10개의 코드 조각이 표시됩니다. 1분 안에 오류를 찾으면 1점을 얻습니다.
1분 제한은 일부러 만든 것입니다. 그렇지 않으면 모든 오류를 확실히 찾을 수 있습니다. 코드 조각이 짧습니다. 어쨌든, 이 퀴즈를 게임으로 다루세요. 프로그래밍 기술에 대한 실제 테스트가 아닙니다. :)
오류를 찾으면 마우스로 강조 표시하고 "답변"을 클릭하십시오. 때로는 코드에 오류가 있는 여러 위치가 있습니다. 그 중 하나를 강조 표시하면 답이 정확합니다. 예를 들어 설명하겠습니다.
case FuriHalSubGhzPreset2FSKDev476Async:
preset_name = "FuriHalSubGhzPreset2FSKDev476Async";
break;
FURI_LOG_E(SUBGHZ_PARSER_TAG, "Unknown preset");
default:
이 코드 조각은 FlipperZero 프로젝트에서 가져온 것입니다. PVS-Studio 분석기는 코드의 일부가 절대 실행되지 않는다고 경고합니다. V779 [CWE-561, CERT-MSC12-C] 연결할 수 없는 코드가 감지되었습니다. 오류가 있을 수 있습니다. subghz_i.c 44
개발자는 아마도 서두르고
break
연산자 다음에 로깅 매크로를 사용했을 것입니다. 또는 이것은 실패한 리팩토링의 결과입니다. 어쨌든 여기서 오류는 명백합니다. 하지만 무엇을 강조해야 할까요?한편으로는 응답으로 중단 연산자를 선택할 수 있습니다.
FURI_LOG_E
앞에 있으며 switch
연산자 실행을 중단합니다. 그래서 문제는 여기에 있습니다.반면에 로깅 매크로를 선택할 수 있습니다. 도달할 수 없는 코드입니다.
그렇다면 정답은 무엇입니까? 이것은 쉬워요. 이 경우
break
연산자 또는 FURI_LOG_E
매크로를 강조 표시하는 것이 정답이 됩니다.이제 규칙이 명확하다고 생각합니다. 행운을 빕니다: play the quiz .
이 퀴즈를 팀원들과 공유하는 것을 잊지 마세요! 즐거운 시간 보내시고 버그 없는 코드를 만드시기 바랍니다!
Reference
이 문제에 관하여(과제: C++ 코드에서 오류를 발견할 수 있습니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/unicorn_developer/challenge-can-you-spot-an-error-in-c-code-2oo6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)