软著申请之代码整理跟代码数统计

739 阅读2分钟

大家好,又到一年一度的我司申请软著的时候了,今年写了一些小工具,分享一下,大家写软著的时候兴许能用到。

1. 代码整理

软著的申请是需要提交一些项目代码的,最好是60页,前面最好是项目的启动文件,因此第一页我首先会拷贝项目的 package.json文件,接下来拷贝 src/app 下面的文件,那么手动拷贝一个个文件这种麻烦的事情程序员肯定不会干的,因此用到了以下这个文件,可以输出某个目录下的所有文件,并进行整理。

另外由于代码文件中不建议出现空行,因此这里的程序把所有的空行都去掉了。

输出完文件之后,需要对文件进行检查,如果文件的内容的中文部分对软著的申请有歧义的,可以进行进一步诠释或者删除。

const fs = require('fs');
const path = require('path');

const sourceDir = path.resolve(__dirname, 'src/pages'); // 替换为你的目标目录
const outputFile = path.resolve(__dirname, 'merged_output.txt');
const projectName = '' // 替换为你的项目名称

// 清空或新建输出文件
fs.writeFileSync(outputFile, '', 'utf-8');

// 递归读取所有文件
function readFilesRecursively(dir) {
  const entries = fs.readdirSync(dir, { withFileTypes: true });

  for (const entry of entries) {
    const fullPath = path.join(dir, entry.name);

    if (entry.isDirectory()) {
      readFilesRecursively(fullPath);
    } else if (entry.isFile()) {
      const relativePath = path.relative(__dirname, fullPath);
      const content = fs.readFileSync(fullPath, 'utf-8');
      const nonEmptyLines = content
        .split('\n')
        // .map((line) => line.trim())
        .filter((line) => line !== '');

      // 写入相对路径和内容
      fs.appendFileSync(outputFile, `// ${projectName}/${relativePath} \n`, 'utf-8');
      fs.appendFileSync(outputFile, nonEmptyLines.join('\n') + '\n', 'utf-8');
      console.log(`已合并:${relativePath}`);
    }
  }
}

readFilesRecursively(sourceDir);
console.log(`✅ 合并完成,输出文件:${outputFile}`);

输出格式形如:

// project-name/your-folder/file1.txt
非空行内容1
非空行内容2
// project-name/your-folder/file1.txt
console.log('hello');

2. 代码行数统计

那么在软著的申请表上还需要统计项目代码的总行数,像这种麻烦的事情程序员也不会手动干的。

先安装插件StatisticWebstorm/Setting然后搜索 image.png

点击statistics,在这里可以查看到项目代码的总行数。

image.png

如果需要去掉某些目录,点击setting后可以点击这里的Add,添加后将不会进行统计。

image.png

后面附上软著申请的参考文件,有需要的可以看看

软著编写模板

AlexanderZhou01/China-software-copyright

手把手带你申请软著!助你提高通过率!!!

前端可以申请软著吗