Protobuf/Buf Formatter Fails for Files Larger than 64KiB
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 38/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- java
- 领域
- build-system
调研方向
使用一个大于 64 KiB 的有效 .proto 文件重现该故障,并运行 spotlessApply。首先阅读 ProcessRunner.start 以及跟踪信息中显示的调用点 BufStep.java:109;当格式化完成且没有 Broken pipe lint、生成的输出仍然有效时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
Test case:
- Define a .proto files larger than 64 KiB (or your platform's pipe buffer limit). Padding with whitespace should also work.
- Configure spotless to format said file.
- Run spotlessApply (gradle example).
Expected behavior:
Formatting runs and passes (if valid proto file).
Actual behavior:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':treatment:api:spotlessProtobufApply'.
...
Caused by: org.gradle.api.GradleException: There were 1 lint error(s), they must be fixed or suppressed.
src/...:LINE_UNDEFINED buf(java.io.IOException) Broken pipe (...)
Resolve these lints or suppress with `suppressLintsFor`
at com.diffplug.gradle.spotless.SpotlessApply.performAction(SpotlessApply.java:60)
cat-ing /build/spotless-lints/... shows:
Broken pipe
at java.base/java.io.FileOutputStream.writeBytes(Native Method)
at java.base/java.io.FileOutputStream.write(FileOutputStream.java:367)
at java.base/java.io.BufferedOutputStream.implWrite(BufferedOutputStream.java:217)
at java.base/java.io.BufferedOutputStream.write(BufferedOutputStream.java:206)
at java.base/java.io.FilterOutputStream.write(FilterOutputStream.java:110)
at com.diffplug.spotless.ProcessRunner.start(ProcessRunner.java:165)
at com.diffplug.spotless.ProcessRunner.start(ProcessRunner.java:131)
at com.diffplug.spotless.ProcessRunner.exec(ProcessRunner.java:114)
at com.diffplug.spotless.ProcessRunner.exec(ProcessRunner.java:109)
at com.diffplug.spotless.protobuf.BufStep$State.format(BufStep.java:109)
at com.diffplug.spotless.FormatterFunc$Closeable$3.apply(FormatterFunc.java:140)
at com.diffplug.spotless.FormatterStepEqualityOnStateSerialization.format(FormatterStepEqualityOnStateSerialization.java:49)
at com.diffplug.spotless.LintState.of(LintState.java:177)
at com.diffplug.spotless.LintState.of(LintState.java:134)
at com.diffplug.gradle.spotless.SpotlessTaskImpl.processInputFile(SpotlessTaskImpl.java:134)
at com.diffplug.gradle.spotless.SpotlessTaskImpl.performAction(SpotlessTaskImpl.java:117)
...
- 主要语言
- Java
- 星标
- 5.7k
- 派生
- 560
- 平均合并
- 1 天 9 小时
- 30 天内合并 PR
- 42
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
diffplug/spotless 的其他 Issue
-
难度 5/5 一周以上 新手友好度 15/100
-
难度 5/5 一周以上 新手友好度 35/100
-
难度 3/5 1-2 天 新手友好度 66/100
-
难度 3/5 1-2 天 新手友好度 68/100
-
难度 4/5 3-5 天 新手友好度 52/100
查看 diffplug/spotless 的全部 Issue
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 84/100
-
ci-failure-cause test-failure
难度 2/5 1-3 小时 新手友好度 72/100
-
enhancement
难度 2/5 1-3 小时 新手友好度 65/100
nextcloud/notes-android#3367 ·
-
Feature
难度 2/5 1-3 小时 新手友好度 68/100
MuntashirAkon/AppManager#2058 ·
-
SarifLogger: artifactLocation.uri is not properly encoded for file names containing '#', '?', or '%' 未关闭
难度 2/5 1-3 小时 新手友好度 76/100
checkstyle/checkstyle#21721 ·