删除文章

确定要删除这篇文章吗?

取消
确定

AStyle格式化代码

     阅读(421)  2018-07-13 18:16:33

通过Node.js脚本来调用AStyle.exe格式化代码。
src:需要格式化的代码目录
params:AStyle参数,默认使用linux风格
filterNameList:不进行格式化的目录,跳过这些目录
regSuffix:需要格式化的文件名正则

const fs = require('fs')
const path = require('path')
const { exec } = require('child_process');

/**
 * 通过配置这几个参数来更改行为
 */
const src = path.normalize(__dirname)
const params = '--style=linux --align-reference=type --align-pointer=type --pad-header --pad-comma --pad-oper --indent-preproc-block'
const filterNameList = ['3rd', 'protobuf', 'tinyxml', 'websocket', 'win32']
const regSuffix = /\.(h|cpp)/

function syncReadAllFile(dir, cb) {
  const subDir = fs.readdirSync(dir);
  for (let dirName of subDir) {
    const subPath = path.normalize(dir + '/' + dirName);
    if (fs.lstatSync(subPath).isDirectory()) {
      syncReadAllFile(subPath, cb);
    } else {
      cb(subPath)
    }
  }
}

let count = 0;
syncReadAllFile(src, function(subpath) {
  const dirname = path.dirname(subpath);
  const basename = path.basename(subpath);
  let isFilter = false;
  for (let filterName of filterNameList) {
    if (dirname.indexOf(filterName) >= 0) {
      isFilter = true;
      break;
    }
  }
  if (!isFilter && regSuffix.test(subpath)) {
    ++count;
    console.log(subpath)
    exec(path.normalize(src + '/AStyle.exe') + ' ' + subpath + ' ' + params)
  }
})

console.log('finished total:' + count)

AStyle.exe下载地址

文章评论

tujiaw
还不错哦
Keep it simple,stupid
文章数
292
总访问量
356038
今日访问
245
最近评论

xuehaoyun : 很不错,来围观一下
tujiaw : 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞 : 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
于淞 : 你好,这个文章的源码能分享一下吗,838106303@163.com,谢谢了 上面的链接不能用了
tujiaw : 多谢多谢
essaypinglun college-paper.org : 很好的博客,赞赞
Folly : 这个实现有点奇怪,Qt为什么没有统一的比对方法。
过多s : alert("hello, world!")
tujiaw : 还不错哦
回到顶部