Windows의 VSCode에서 clang-format이 효과가 없을 때의 확인과 대처

TL;DR


  • 증상 : Windows VSCode에서 C/C++ 파일을 편집 할 때 관련 플러그인이 설치되어 있고 "Format on Save"가 활성화되어 있음에도 불구하고 저장시 포맷터가 실행되지 않습니다.
  • 확인 방법: C/C++의 파일을 연 상태로, 커멘드 팔레트로부터 「문서의 포맷 (Format Document)」을 실행하면, 오른쪽 하단에 「write EPIPE」라고 하는 에러가 나오면 이것.
  • 대응: 여기 에서, 「Windows 64 bit」를 다운로드해 LLVM을 인스톨 해, clang-format에 패스를 통과해, VS Code를 재기동한다.
  • 관련 이슈

  • 상세



    이제 TL; DR에 쓴 대로이지만, Windows의 VSCode에서 clang-format가 효과가 없어졌을 때의 각서.

    VSCode에서 C/C++의 파일을 편집할 때, 우선 C/C++의 플러그인을 넣는다고 생각한다. 그런 다음 Clang-Format 플러그인을 넣고 저장할 때 포맷터가 실행되도록하는 사람도 많을 것이다. 그러나 어느새 이것이 움직이지 않게 되었다.

    구체적으로는
  • Windows 10
  • VSCode 1.43.2
  • C/C++ 플러그인 0.27.0
  • Clang-Format 플러그인 1.9.0

  • 의 조합으로, 보존시에 포매터가 달려 주지 않는다.

    명시적으로 포맷시키기 위해 Ctrl+Shift+P로 명령 팔레트 내고 "format"를 입력하고 "문서 포맷(Format Document)"을 선택하여 실행하면 오른쪽 하단에 "write EPIPE"라는 오류가 발생 온다. 이런거.



    조사해 보면 Clang-Format 플러그인의 리포지토리에 같은 문제를 보고한 issue이 있었다.

    거기에 쓴 Workaround가
  • LLVM 넣기

  • 라는 것이었다.

    Clang-Format 플러그인은 clang-format을 찾을 수 없으면 VSCode의 C/C++ 플러그인이 가지고 있는 clang-format을 사용한다. 그것은
    C:\Users\ユーザー名\.vscode\extensions\ms-vscode.cpptools-0.27.0\LLVM\bin\
    에 있는데, 아무래도 이것과의 제휴에 문제가 있는 것 같다.

    그래서, 여기 에서, 「Windows 64 bit」를 다운로드해 LLVM을 인스톨 해, clang-format에 패스를 통과시킨다. LLVM을 설치할 때 "모든 사람에게 패스를 통과"또는 "현재 사용자에게만 패스를 통과"를 선택할 수 있기 때문에, 그것은 기호로. 다만, 여기서 패스를 통과시키지 않는 경우는 플러그인측에서 패스를 지정하여 할 필요가 있다.

    패스를 통과했을 경우, 적당한 터미널(예를 들어 Windows PowerShell)을 기동해, clang-format.exe에 패스가 통과하고 있는 것을 확인한다.
    PS C:\Users\username> clang-format.exe --version
    clang-format version 10.0.0
    

    이 상태에서 VSCode를 재기동하면, 다음부터는 보존시에 clang-format가 달릴 것이다.

    좋은 웹페이지 즐겨찾기