1. 程式人生 > >Linux下的程式碼格式工具詳解(indent, clang-format, astyle)

Linux下的程式碼格式工具詳解(indent, clang-format, astyle)

1 indent

indent 可辨識 C 的原始程式碼檔案, 並加以格式化, 以方便程式設計師閱讀.

Linux kernel 有一個指令碼 Lindent, 參見scripts/Lindent, 用來格式化 kernel 程式碼. 這個指令碼就是通過 indent 工具來完成程式碼格式化的

Ubuntuindent 可以通過如下方式安裝

sudo apt-get install indent

功能說明:調整C原始程式碼檔案的格式。

語  法:indent [引數][原始檔] 或 indent [引數][原始檔][-o 目標檔案]

引數 說明
-bad或–blank-lines-after-declarations 在宣告區段或加上空白行
-bap或–blank-lines-after-procedures 在程式或加上空白行
-bbb或–blank-lines-after-block-comments 在註釋區段後加上空白行
-bc或–blank-lines-after-commas 在宣告區段中,若出現逗號即換行
-bl或–braces-after-if-line if(或是else,for等等)與後面執行區段的”{“不同行,且”}”自成一行
-bli<縮排格數>或–brace-indent<縮排格數> 設定{ }縮排的格數
-br或–braces-on-if-line if(或是else,for等等)與後面執行跛段的”{“不同行,且”}”自成一行
-bs或–blank-before-sizeof 在sizeof之後空一格。
-c<欄數>或–comment-indentation<欄數> 將註釋置於程式碼右側指定的欄位
-cd<欄數>或–declaration-comment-column<欄數> 將註釋置於宣告右側指定的欄位
-cdb或–comment-delimiters-on-blank-lines 註釋符號自成一行
-ce或–cuddle-else 將else置於”}”(if執行區段的結尾)之後
-ci<縮排格數>或–continuation-indentation<縮排格數> 敘述過長而換行時,指定換行後縮排的格數
-cli<縮排格數>或–case-indentation-<縮排格數> 使用case時,switch縮排的格數
-cp<欄數>或-else-endif-column<欄數> 將註釋置於else與elseif敘述右側定的欄位
-cs或–space-after-cast 在cast之後空一格
-d<縮排格數>或-line-comments-indentation<縮排格數> 針對不是放在程式碼右側的註釋,設定其縮排格數
-di<欄數>或–declaration-indentation<欄數> 將宣告區段的變數置於指定的欄位
-fc1或–format-first-column-comments 針對放在每行最前端的註釋,設定其格式
-fca或–format-all-comments 設定所有註釋的格式
-gnu或–gnu-style. 指定使用GNU的格式,此為預設值
-i<格數>或–indent-level<格數> 設定縮排的格數
-ip<格數>或–parameter-indentation<格數> 設定引數的縮排格數
-kr或–k-and-r-style. 指定使用Kernighan&Ritchie的格式
-lp或–continue-at-parentheses 敘述過長而換行,且敘述中包含了括弧時,將括弧中的每行起始欄位內容垂直對其排列
-nbad或–no-blank-lines-after-declarations 在宣告區段後不要加上空白行
-nbap或–no-blank-lines-after-procedures 在程式後不要加上空白行
-nbbb或–no-blank-lines-after-block-comments 在註釋區段後不要加上空白行
-nbc或–no-blank-lines-after-commas 在宣告區段中,即使出現逗號,仍舊不要換行
-ncdb或–no-comment-delimiters-on-blank-lines 註釋符號不要自成一行。
-nce或–dont-cuddle-else 不要將else置於”}”之後。
-ncs或–no-space-after-casts 不要在cast之後空一格。
-nfc1或–dont-format-first-column-comments 不要格式化放在每行最前端的註釋
-nfca或–dont-format-comments 不要格式化任何的註釋。
-nip或–no-parameter-indentation 引數不要縮排
-nlp或–dont-line-up-parentheses 敘述過長而換行,且敘述中包含了括弧時,不用將括弧中的每行起始欄位垂直對其排列
-npcs或–no-space-after-function-call-names 在呼叫的函式名稱之後,不要加上空格
-npro或–ignore-profile 不要讀取indent的配置檔案.indent.pro
-nprs或者–space-after-parentheses 在”(”後”)”前不插入空格
-npsl或–dont-break-procedure-type 程式型別與程式名稱放在同一行
-nsc或–dont-star-comments 不在生成的塊註釋中加, 註解左側不要加上星號()
-nsob或–leave-optional-semicolon 不用處理多餘的空白行
-nss或–dont-space-special-semicolon 若for或while區段僅有一行時,在分號前不加上空格。
-nv或–no-verbosity 不顯示詳細的資訊
-orig或–original 使用Berkeley的格式
-pcs或–space-after-procedure-calls 在呼叫的函式名稱與”{“之間加上空格
-psl或–procnames-start-lines 程式型別置於程式名稱的前一行。
-sc或–start-left-side-of-comments 在每行註釋左側加上星號(*)
-sob或–swallow-optional-blank-lines 刪除多餘的空白行
-ss或–space-special-semicolon 若for或swile區段今有一行時,在分號前加上空格
-st或–standard-output 將結果顯示在標準輸出裝置
-saf或者–space-after-for for後面有空格
-sai或者–space-after-if if後面有空格
-saw或者–space-after-while while後面有空格
-T 資料型別名稱縮排
-ts<格數>或–tab-size<格數> 設定tab的長度
pcs或者–space-after-procedure-calls 函式和”(“之間插入一個空格
psl或者–procnames-start-lines 將函式名和返回型別放在兩行定義
-ut或者–use-tabs 使用tab來縮排
-v或–verbose 執行時顯示詳細的資訊
-version 顯示版本資訊

2 clang-format

clang 編譯器中整合的程式碼格式化工具,

官方文件參見

3 AStyle

Astyle 的全稱是 Artistic Style, 某種程度是目前最好用的程式碼整理工具, 很多所謂的程式碼整理工具其實都是拿這個東東改進, 開發的.

相關推薦

Linux程式碼格式工具(indent, clang-format, astyle)

1 indent indent 可辨識 C 的原始程式碼檔案, 並加以格式化, 以方便程式設計師閱讀. Linux kernel 有一個指令碼 Lindent, 參見script

Linux hosts文件

domain none oca 不同 詳解 als 機器 區別 int Linux 下hosts文件詳解 主機名: 無論在局域網還是INTERNET上,每臺主機都有一個IP地址,是為了區分此臺主機和彼臺主機,也就是說IP地址就是主機的門牌號。 公網:IP地

【轉載】linux的mount命令

文件的 flag 自動加載 網絡文件系統 解決問題 選項 lock home 多個參數 以下內容來自:http://blog.csdn.net/clozxy/article/details/5299054 http://linux.chinaunix.net/techdo

Linux使用Corosync+Pacemaker及安裝

corosync pacemaker 珠聯璧合 Corosync詳解OpenAIS概述OpenAIS是基於SA Forum 標準的集群框架的應用程序接口規範。OpenAIS提供一種集群模式,這個模式包括集群框架,集群成員管理,通信方式,集群監測等,能夠為集群軟件或工具提供滿足 AIS標準的集

Linuxinittab文件

tle sso 根據 UC number mage failure 並且 命令行模式 /etc/inittab文件詳解 Linux系統的啟動過程為:加電自檢-->根據BIOS中的設置從指定的設備啟動-->找到設備MBR中的bootloader引導啟動系統--&

Linux進程管理工具

進程管理工具 進程管理工具 查看進程 pstree 顯示進程樹 -p:顯示PID ps 搜索進程 ps | grep pgrep pidof系統監控工具

linux路由設置

RoCE ive sys 路由route 寫入文件 路由表 ado per 數據 路由表信息解釋 ##名詞解釋:Active Routes:活動的路由Network destination :目的網段Netmask:子網掩碼Gateway:網關,又稱下一跳路由器。在發送

Linux套接字---epoll模式的IO多路複用伺服器

1 epoll模型簡介 epoll可是當前在Linux下開發大規模併發網路程式的熱門人選,epoll 在Linux2.6核心中正式引入,和select相似,其實都I/O多路複用技術而已,並沒有什麼神祕的。 其實在Linux下設計併發網路程式,向來不缺少方法,比如典型的Apache模型(Proce

Linuxclock gettime函式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

linux 的連結檔案

轉載來自:http://linux.chinaunix.net/techdoc/beginner/2009/08/12/1129972.shtml 轉載來自:(這個哥們加工了的,各種顏色,美化)http://www.cnblogs.com/li-hao/p/4107964.html

【轉載】Linux安裝軟體命令

【轉載日期】2018.09.11 【轉載標題】Linux下安裝軟體命令詳解 ----------------------------------------------------------------------------------------------

linuxopensll加解密

1、使用tar對檔案壓縮加密: 在當前目錄下有一個pma目錄的資料夾: tar -zcvf - pma|openssl des3 -salt -k password | dd of=pma.des3 完成將得到一個pma.des3的打包檔案,用你設定的密碼替換password。 2、使用ta

LinuxMongoDB 安裝配置

1.MongoDB簡單說明   a MongoDB是由C++語言編寫的一個基於分散式檔案儲存的開源資料庫系統,它的目的在於為WEB應用提供可擴充套件的高效能資料儲存解決方案。   b MongoDB是一個介於關係型資料庫和非關係型資料庫之間的產品,是非關係型資料庫當中功能

(筆記)Linux的ioctl()函式

我這裡說的ioctl函式是指驅動程式裡的,因為我不知道還有沒有別的場合用到了它,所以就規定了我們討論的範圍。寫這篇文章是因為我前一陣子被ioctl給搞混了,這幾天才弄明白它,於是在這裡清理一下頭腦。 一、 什麼是ioctl      ioctl是裝置驅動程

linux配置yum源

本人使用的方法一,成功配置,方法二沒測過,可以作為參考 方法一: 1.確保RHEL5中已經安裝了yum [[email protected] ~]# rpm -qa |grep yum yum-metadata-parser-1.1.2-3.el5 yum-up

linux的tar命令

通過SSH訪問伺服器,難免會要用到壓縮,解壓縮,打包,解包等,這時候tar命令就是是必不可少的一個功能強大的工具。linux中最流行的tar是麻雀雖小,五臟俱全,功能強大。 tar命令可以為linux的檔案和目錄建立檔案。利用tar,可以為某一特定檔案建立檔案(備份檔案),也可以在檔案中改變檔案,或者向檔案

Tomact8部署在linux啟動很慢

轉載老大的部落格~我們當時遇到的實際問題解決辦法,作為一個記錄 ————————————————————分割線—————————————————— Tomcat 8熵池阻塞變慢詳解 Tomcat 8啟動很慢,且日誌上無任何錯誤,在日誌中檢視到如下資訊: Log4j:[2015-10-29 15:4

【轉發】centos 7開啟FTP以及新增使用者配置許可權,只允許訪問自身目錄,不能跳轉根目錄 linuxftp配置檔案

1.切換到root使用者 2.檢視是否安裝vsftp,我這個是已經安裝的。 [[email protected] vsftpd]# rpm -qa |grep vsftpd vsftpd-3.0.2-11.el7_2.x86_64 3.如果沒有發現,則安裝。 yum ins

Linux原始碼編譯安裝

前言 原始碼要執行,必須先轉成二進位制的機器碼。這是編譯器的任務。 比如,下面這段原始碼(假定檔名叫做test.c)。 #include <stdio.h> int main(void) {   fputs("Hello, world!\n", stdout

Linux套接字(十)---epoll模式的IO多路複用伺服器

1 epoll模型簡介 epoll可是當前在Linux下開發大規模併發網路程式的熱門人選,epoll 在Linux2.6核心中正式引入,和select相似,其實都I/O多路複用技術而已,並沒有什麼神祕的。 其實在Linux下設計併發網路程式,向來不缺少