Creating a C/C++ Code Formatting tool with help of Clang tools

Last Updated : 16 Jul, 2020
Today we are going to discuss formatting files in the user's workspace by their extension. For this we are going to make use of Clang's format tools. Prerequisites:
  • Linux Machine
  • Python
  • Clang Tool
Setup:
  • Install Python using the following command:
    sudo apt-get install python
  • Install Clang Format Tools
    sudo apt-get install clang-format-3.5
  • Create a python file named format-code.py at any location where you have read and write permissions. In this example we are going to create it in /home/user/. It shall contain the following code: python
    # Python program to format C/C++ files using clang-format
    import os
    
    # File Extension filter. You can add new extension
    cpp_extensions = (".cxx",".cpp",".c", ".hxx", ".hh", ".cc", ".hpp")
    
    # Set the current working directory for scanning c/c++ sources (including
    # header files) and apply the clang formatting
    # Please note "-style" is for standard style options
    # and "-i" is in-place editing
    for root, dirs, files in os.walk(os.getcwd()):
        for file in files:
            if file.endswith(cpp_extensions):
                os.system("clang-format-3.5 -i -style=file " + root + "/" + file)
    
  • Create format specification file and copy it to project's top level directory , e.g., /home/user/myproject/
    1. Create formatting file (in example, we are creating google coding style tool)
      clang-format-3.5 -style=google -dump-config > .clang-format 
    2. Copy it to project's directory i.e., it's location becomes: /home/user/myproject/.clang-format
How to use it?
  • Navigate to the directory whose files you want to format, e.g.,
    cd  /home/user/myproject/c-source/
  • Run the format-code file that you created earlier
    python /home/user/format-code.py
  • This shall format all the files in our source directory with the extension same as that mentioned in the code.
Comment