boj-extended icon indicating copy to clipboard operation
boj-extended copied to clipboard

일부 언어에 한하여 테스트 시 `stderr`에 경고가 없음에도 불구하고 ⚠️로 판정됩니다

Open wzrabbit opened this issue 6 months ago • 2 comments

What Happens

BOJ의 [제출] 페이지에서 F#, C#, Python 3, Ada, Pascal 언어 중 하나를 고르고, 테스트 (beta) 버튼을 누를 경우 경고가 발생하지 않는 코드임에도 불구하고 결과가 ⚠️로 판정됩니다.

이 상황이 실제로 경고가 발생하는 상황이라면 올바른 동작이지만, 그렇지 않은 경우이므로 버그라고 생각합니다. 이 문제가 발생하는 이유는 BOJ Extended에서는 출력이 일치하나 stderr에 출력이 있을 경우 경고가 있다고 판정하여 결과를 ⚠️로 표시하기 때문입니다.

실제로는 stderr에 출력되는 메시지는 단순히 컴파일 및 빌드 과정에서 출력되는 단순 로그일 수도 있어, 이를 구분하여 결과를 ✅로 표시할지, ⚠️로 표시할지를 추가 검증해야 한다고 생각합니다. 위에 제가 명시한 언어들은 경고 유무와 관계없이 stderr에 출력이 있는 언어들입니다.

Image

*버그 리포트 탬플릿이 있음은 숙지하고 있으나, PR을 동반하는 이슈이며 로직 상 모든 환경에서 재현 가능한 버그이므로 브라우저/운영체제 정보는 적지 않음을 양해해 주시면 감사하겠습니다.

wzrabbit avatar Jun 16 '25 14:06 wzrabbit

테스트 기능이 웹페이지에서 간단한 수정 시 오타 같은 사소한 이유로 생기는 컴파일 오류를 막고자하는 게 주목적이었습니다. 그렇기에 stdin/stdout/stderr 결과를 모두 공개하고 유저에게 판단을 맡기는 방향으로 현재와 같이 되었습니다.

하지만 유저 입장에서는 BOJ 채점 결과와 동일할 것을 기대하는게 당연하다고 생각해서 테스트 기능을 추가할 때 우려하는 부분이 많았습니다.

서드파티를 사용하여 코드를 컴파일/실행하기 때문에 BOJ와 완전히 같은 결과를 표시하는 데에는 확장 프로그램에서 처리해야 할 작업이 많을 것으로 예상합니다. (BOJ 컴파일러 버전 동기화, 결과 파싱 등) stdout/stderr 를 후처리해서 결과가 맞도록 조작하는 게 과연 맞는 것인가라는 물음에 아직 답을 내지 못해서 수정은 최소한으로 하고 있습니다.

TIO 가 아닌 다른 컴파일러/인터프리터 API를 검토하고도 있는 상황이라 올려주신 Pull Request 를 확인하는 데 시간이 걸릴 수 있는 점 이해 바랍니다. (https://github.com/joonas-yoon/boj-extended/issues/180)

감사합니다.

joonas-yoon avatar Jun 17 '25 04:06 joonas-yoon

네, 신중해야 하는 작업임을 알고 있으며 #180 또한 숙지한 후 올린 이슈입니다. 개선 작업하시느라 고생이 많으십니다. 어쩌면 지금 제가 작업한 부분들도 임시방편이라고 생각합니다. 근본적인 문제 해결을 위해서는 #180 이 진행되어야 한다고 생각합니다.

wzrabbit avatar Jun 17 '25 06:06 wzrabbit