【代码格式化】linux代码格式化(Astyle)+wind格式转unix格式(Doc2Unix)----git提交代码前的处理
乐鑫的git代码提交前的建议:值得学习
格式化代码
您在提交代码之前需要对代码进行格式化,ESP-MDF 使用的格式化式工具为:astyle 和 dos2unix。您需要先安装他们,在 Linux 安装命令如下:
sudo apt-get install astyle
sudo apt-get install doc2unix
运行如下代码格式化命令:
tools/format.sh new_file.c
API 文档生成
在编写代码注释时,请遵循 Doxygen 格式。您可以通过 Doxygen
按如下步骤自动生成 API 文档:
sudo apt-get install doxygen
export MDF_PATH=~/esp/esp-mdf
cd ~/esp/esp-mdf/docs
pip install -r requirements.txt
cd ~/esp/esp-mdf/docs/en
make html
dos2unix的使用
由于在DOS(windows系统)下,文本文件的换行符为CRLF,而在Linux下换行符为LF,使用git进行代码管理时,git会自动进行CRLF和LF之间的转换,这个我们不用操心。而有时候,我们需要将windows下的文件上传到linux上,例如shell脚本,执行的时候有时会出现奇怪的问题,这时候,就需要安装dos2unix软件。
在centos下安装dos2unix:
yum install -y dos2unix
安装完成后,对文件进行转换
dos2unix abc.sh
现在执行就不会出问题了
转自:https://www.cnblogs.com/lucky-heng/p/10679900.html
Astyle格式化代码
基本命令
astyle --style=ansi main.cs
astyle 使用说明和集成到 各种IDE平台:https://www.cnblogs.com/jiangxinnju/p/4908575.html
Astyle格式化代码-选项说明
官方文档 http://astyle.sourceforge.net/astyle.html
配置了最佳的教科书格式
astyle *.c *.cpp *.h --recursive --style=bsd --convert-tabs --indent=spaces=8 --attach-closing-while --indent-switches --indent-namespaces --indent-continuation=4 --indent-preproc-block --indent-preproc-define --indent-preproc-cond --indent-col1-comments --pad-oper --pad-paren-in --unpad-paren --delete-empty-lines --align-pointer=name --align-reference=name --break-elseifs --add-braces
--indent-switches 缩进case标签
switch (foo)
{
case 1:
a += 1;
break;
case 2:
{
a += 2;
break;
}
}
becomes:
switch (foo)
{
case 1:
a += 1;
break;
case 2:
{
a += 2;
break;
}
}
--indent=spaces=8 缩进8个空格
void Foo()
{
........bar();
}
--indent-namespaces 缩进命名空间块
namespace foospace
{
class Foo
{
public:
Foo();
virtual ~Foo();
};
}
becomes:
namespace foospace
{
class Foo
{
public:
Foo();
virtual ~Foo();
};
}
--indent-continuation=4 等号=或(结尾后续本语句符号插入空格,默认为1,可取1~4
isLongVariable =
foo1 ||
foo2;
isLongFunction(
bar1,
bar2);
becomes (with indent-continuation=3):
isLongVariable =
foo1 ||
foo2;
isLongFunction(
bar1,
bar2);
--style=bsd 大括号独占一行,上下对齐
int Foo(bool isBar)
{
if (isBar)
{
bar();
return 1;
}
else
return 0;
}
--attach-closing-while (while紧贴)
do
{
bar();
++x;
}
while x == 1;
becomes:
do
{
bar();
++x;
} while x == 1;
--indent-preproc-block 缩进#开头的处理语句
#ifdef _WIN32
#include <windows.h>
#ifndef NO_EXPORT
#define EXPORT
#endif
#endif
becomes:
#ifdef _WIN32
#include <windows.h>
#ifndef NO_EXPORT
#define EXPORT
#endif
#endif
--indent-preproc-cond 预处理语句也缩进
isFoo = true;
#ifdef UNICODE
text = wideBuff;
#else
text = buff;
#endif
becomes:
isFoo = true;
#ifdef UNICODE
text = wideBuff;
#else
text = buff;
#endif
--indent-col1-comments 注释也缩进
void Foo()\n"
{
// comment
if (isFoo)
bar();
}
becomes:
void Foo()\n"
{
// comment
if (isFoo)
bar();
}
--pad-oper 操作符间插入空格
if (foo==2)
a=bar((b-c)*a,d--);
becomes:
if (foo == 2)
a = bar((b - c) * a, d--);
--pad-comma 逗号间插入空格(--pad-oper中已有此效果)
if (isFoo(a,b))
bar(a,b);
becomes:
if (isFoo(a, b))
bar(a, b);
--pad-paren-in 括号里内插入空格
if (isFoo((a+2), b))
bar(a, b);
becomes:
if ( isFoo( ( a+2 ), b ) )
bar( a, b );
--unpad-paren 紧凑括号内外
if ( isFoo( ( a+2 ), b ) )
bar ( a, b );
becomes (with no padding option requested):
if(isFoo((a+2), b))
bar(a, b);
--delete-empty-lines 清除函数间的空行
void Foo()
{
foo1 = 1;
foo2 = 2;
}
becomes:
void Foo()
{
foo1 = 1;
foo2 = 2;
}
指针符号紧贴哪
char* foo1;
char & foo2;
string ^s1;
becomes (with --align-pointer=type):
char* foo1;
char& foo2;
string^ s1;
char* foo1;
char & foo2;
string ^s1;
becomes (with --align-pointer=middle):
char * foo1;
char & foo2;
string ^ s1;
char* foo1;
char & foo2;
string ^s1;
becomes (with --align-pointer=name):
char *foo1;
char &foo2;
string ^s1;
//引用符号紧贴哪
char &foo1;
becomes (with --align-reference=type):
char& foo1;
char& foo2;
becomes (with --align-reference=middle):
char & foo2;
char& foo3;
becomes (with --align-reference=name):
char &foo3;
char &foo1;
becomes (with --align-reference=type):
char& foo1;
char& foo2;
becomes (with --align-reference=middle):
char & foo2;
char& foo3;
becomes (with --align-reference=name):
char &foo3;
--attach-return-type-decl 返回类型紧贴符号名
void
Foo(bool isFoo);
becomes:
void Foo(bool isFoo);
--add-braces 在'if', 'for', 'while'等句块中只有一行也加入大括号
if (isFoo)
isFoo = false;
becomes:
if (isFoo) {
isFoo = false;
}
--convert-tabs 将TAB符转化成空格,由转化参数指定,引号内的不转化
--recursive 遍历目录,文件名要指定为带通配符(*)的名字,含有空格的文件名要加引号
原文链接:https://blog.csdn.net/wisepragma/article/details/80993437