Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: legacy pkg publish #533

Merged
merged 1 commit into from
Jun 27, 2023
Merged

fix: legacy pkg publish #533

merged 1 commit into from
Jun 27, 2023

Conversation

elrrrrrrr
Copy link
Member

@elrrrrrrr elrrrrrrr commented Jun 27, 2023

pkgs sync from cnpmjs.org may contain uppercase characters.

  1. 🧶 Update the validation rules, allow to publish existing packages.

部分包从 cnpmjs.org 进行同步,可能含有大写字符

  1. 🧶 更新校验规则,允许存量包修改

@elrrrrrrr elrrrrrrr added the bug Something isn't working label Jun 27, 2023
@elrrrrrrr elrrrrrrr requested a review from fengmk2 June 27, 2023 03:39
if (!pkg) {
const errors = (validateResult.errors || validateResult.warnings).join(', ');
throw new UnprocessableEntityError(`package.name invalid, errors: ${errors}`);
}
}
const versions = Object.values(pkg.versions);
if (versions.length === 0) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这段代码的功能是发布一个npm包,以下是我的代码审核:

  • 第7行:该行是多余的,应该将其删除。
  • 第10-14行:使用validate-npm-package-name来验证包名是否有效,在没有错误或警告时抛出一个UnprocessableEntityError。
  • 第15-21行:如果包已经存在,则仍然允许发布。在这种情况下,它会查找包的信息并打印出来,如果找不到该包,则抛出UnprocessableEntityError。
  • 第22-25行:获取包中所有版本的值,并检查它们是否为0。

以下是一些改进建议:

  • 需要添加一些注释以解释某些特定代码段的目的和功能。这将使代码更易于理解和维护。
  • 第19行中的“pkg”重新赋值,覆盖了类级别变量,这可能会导致不可预测的结果。应该给这个变量一个不同的名称,以避免混淆。
  • 在findPackage()方法上引入try-catch块作为保护,以处理数据库操作中的任何异常或错误情况。
  • 应该使用ESLint等工具检查代码风格和代码规范,并且执行单元测试和端到端测试以确保代码正确性和性能满足要求。

if (!pkg) {
const errors = (validateResult.errors || validateResult.warnings).join(', ');
throw new UnprocessableEntityError(`package.name invalid, errors: ${errors}`);
}
}
const versions = Object.values(pkg.versions);
if (versions.length === 0) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这段代码的主要问题在于变量名 pkg 的重复使用。在函数开始时,fullname 不等于 pkg.name 时会抛出异常,而后面检查 pkg.name 的有效性时,又重新定义了同名的 pkg 变量,在两个地方都使用了它。这会导致第二次 pkg 的定义覆盖了第一次调用时传递进来的参数 pkg,可能会引入潜在的错误。

此外,当 validateResult.validForNewPackages 不为真时,记录了一个日志信息,并不会终止程序运行。如果自动化发布新包时发现了无效包名称,建议不要继续执行,并考虑添加更详细的错误提示信息。

改善建议:

  • 避免重复使用同一个变量名,在第二个 pkg 变量定义前通过重命名或其他方式解决。
  • 当检测到无效包名称时抛出异常并中断程序的执行。必要时给出更具体的错误信息以帮助诊断问题。

assert(res.status === 201);

});

it('should 422 when attachment data format invalid', async () => {
let pkg = await TestUtil.getFullPackage({
attachment: {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这段代码进行了一个单元测试的编写,测试了一个保存依赖包版本的控制器。具体的变化如下:

  • 增加了一个从app/core/service/PackageManagerService模块中获取PackageManagerService对象的引入。
  • 增加了一个测试方法,用于测试允许发布已存在的npm包。
  • 原本最后一个测试方法表示检查附件数据格式是否正确,被截断了。

由于只有部分代码片段,所以我无法对所有风险和优化建议进行全面评估。但是,根据目前提供的信息,似乎没有明显的错误或潜在风险。但是,我们可以考虑以下改进:

  1. 在导入dayjs之前将所有其他导入放在一起。

  2. 考虑拆分较长的代码行,以使每个行都容易阅读。

  3. 可以考虑更多(甚至完整)的测试示例,以覆盖更多可能的情况并帮助识别潜在问题。

  4. 考虑为旧的或过时的模块添加警告标志,并考虑更新它们。

  5. 报告奇怪或异常情况,并捕获可能会发生的异常,避免程序崩溃。

@elrrrrrrr elrrrrrrr requested review from killagu and gemwuu June 27, 2023 03:43
@codecov
Copy link

codecov bot commented Jun 27, 2023

Codecov Report

Merging #533 (f3e2bff) into master (ada3e22) will decrease coverage by 0.06%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #533      +/-   ##
==========================================
- Coverage   97.03%   96.98%   -0.06%     
==========================================
  Files         174      174              
  Lines       16554    16561       +7     
  Branches     2169     2167       -2     
==========================================
- Hits        16063    16061       -2     
- Misses        491      500       +9     
Impacted Files Coverage Δ
...controller/package/SavePackageVersionController.ts 100.00% <100.00%> (ø)

... and 2 files with indirect coverage changes

@fengmk2 fengmk2 merged commit 20ffba8 into master Jun 27, 2023
@fengmk2 fengmk2 deleted the legacy-pkg-publish branch June 27, 2023 03:54
fengmk2 pushed a commit that referenced this pull request Jun 27, 2023
[skip ci]

## [3.34.8](v3.34.7...v3.34.8) (2023-06-27)

### Bug Fixes

* legacy pkg publish ([#533](#533)) ([20ffba8](20ffba8))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants