Formate seu código com clang-format

Escolha o estilo: LLVM, GNU, Google, Chromium, Microsoft ou WebKit.


Formate seu código com clang-format


Nós já publicamos um artigo que descreve detalhes do estilo de código no artigo:

Já nesse artigo vamos conhecer uma ferramenta que formata nosso código de acordo com o estilo que desejamos, trata-se do: clang-format.

ClangFormat(clang-format) é um conjunto de ferramentas que usa LibFormat que formata seu código de várias maneiras, incluindo uma ferramenta autônoma e integrações de editor.


Instalação

Para instalar o clang-format basta possuir a coleção de ferramentas do LLVM, aqui nesse artigo há o procedimento baixando o binário e instalando, mas você também pode usar o gerenciador de pacotes do seu sistema para obter, exemplos:

# Windows
winget install -e --id LLVM.LLVM

# macOS
brew install clang-format

# Debian, Ubuntu, Mint e derivados
sudo apt install clang-format

# Fedora
sudo dnf install clang-tools-extra

# Arch
sudo pacman -S clang-format-git # AUR

# Gentoo, Funtoo e outros
emerge clang

Utilização

Suponhamos que você possua esse código C++: main.cpp:

#include <iostream>
#include <memory>

typedef struct Model {
  std::string hello = "Hello";
} model;

int main(){
  auto m = std::make_unique<model>();
  m->hello = "World";
  std::cout << m->hello << '\n';
}

Ele está formatado da maneira que eu gosto, mas se eu quisesse transforma no padrão GNU bastava rodar o seguinte comando:

clang-format -style=gnu main.cpp

A saída transforma meu código nesse estilo:

#include <iostream>
#include <memory>

typedef struct Model
{
  std::string hello = "Hello";
} model;

int
main ()
{
  auto m = std::make_unique<model> ();
  m->hello = "World";
  std::cout << m->hello << '\n';
}

Bem diferente a formatação, né?!

Se quiser salve para outro arquivo:

clang-format -style=GNU main.cpp > output.cpp

Há os estilos disponíveis: llvm, google, chromium, microsoft, webkit e outros.

Exemplos:

clang-format -style=llvm main.cpp 
clang-format -style=google main.cpp 
clang-format -style=microsoft main.cpp 

Você também pode salvar seu estilo preferido fazendo um dump em um arquivo de nome: .clang-format no caminho/diretório que estiver trabalhando. Para isso rode:

Supondo que você prefere o estilo gnu.

clang-format -style=gnu -dump-config > .clang-format

O arquivo será similar ao conteúdo abaixo e note que é possível alterar as cofigurações de acordo como desejar:

---
Language:        Cpp
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveAssignments:
  Enabled:         false
  AcrossEmptyLines: false
  AcrossComments:  false
  AlignCompound:   false
  PadOperators:    true
AlignConsecutiveBitFields:
  Enabled:         false
  AcrossEmptyLines: false
  AcrossComments:  false
  AlignCompound:   false
  PadOperators:    false
AlignConsecutiveDeclarations:
  Enabled:         false
  AcrossEmptyLines: false
  AcrossComments:  false
  AlignCompound:   false
  PadOperators:    false
AlignConsecutiveMacros:
  Enabled:         false
  AcrossEmptyLines: false
  AcrossComments:  false
  AlignCompound:   false
  PadOperators:    false
AlignEscapedNewlines: Right
...

O arquivo é bem maior, os ... remete a isso!

Se você quiser formatar múltiplos arquivos .cpp use wildcard:

clang-format -i *.cpp

O parâmetro -i modifica o arquivo.

E para modificar diversos arquivos incluindo os arquivos cabeçalho, use esse comando como exemplo:

find . -regex '.*\.\(cpp\|hpp\|cc\|c\|h\)' -exec clang-format -style=file -i {} \;

Se quiser incluir ao seu Editor de Código/IDE procure pelo nome correspondente na documentação do mesmo. No caso do Vim/Neovim use o vim-clang-format.

Para mais informações acesse o clang-format --help e o endereço oficial do clang-format.


clang llvm cpp linguagemc programacao


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!