{"record":{"id":"bd5bdec2d6df1b7f","repo":"theonedev/onedev","slug":"cannot-add-code-comment-outside-of-diff","errorCode":null,"errorMessage":"Cannot add code comment outside of diff","messagePattern":"Cannot add code comment outside of diff","errorType":"validation","errorClass":"NotAcceptableException","httpStatus":406,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/ai/PullRequestHelper.java","lineNumber":189,"sourceCode":"        var changeType = matchingEntry.getChangeType();\n        if (changeType == ChangeType.RENAME && matchingEntry.getOldPath().equals(matchingEntry.getNewPath()))\n            changeType = ChangeType.MODIFY;\n        var oldDiffBlobIdent = GitUtils.getOldBlobIdent(matchingEntry, comparisonBase.name());\n        var newDiffBlobIdent = GitUtils.getNewBlobIdent(matchingEntry, newCommitId.name());\n        var blobChange = new BlobChange(changeType, oldDiffBlobIdent, newDiffBlobIdent, WhitespaceOption.IGNORE_TRAILING) {\n\n            private static final long serialVersionUID = 1L;\n\n            @Override\n            public Project getProject() {\n                return project;\n            }\n\n        };\n\n        var range = new PlanarRange(fromLineNumber - 1, 0, toLineNumber - 1, lines.get(toLineNumber - 1).length());\n        if (!blobChange.isVisible(new DiffPlanarRange(false, range)))\n            throw new NotAcceptableException(\"Cannot add code comment outside of diff\");\n\n        var comment = new CodeComment();\n        comment.setProject(project);\n        comment.setUser(user);\n        comment.setContent(commentContent);\n\n        var mark = new Mark();\n        mark.setCommitHash(newCommitId.name());\n        mark.setPath(filePath);\n        mark.setRange(range);\n        comment.setMark(mark);\n\n        var compareContext = new CompareContext();\n        compareContext.setPullRequest(pullRequest);\n        compareContext.setOldCommitHash(oldCommitId.name());\n        compareContext.setNewCommitHash(newCommitId.name());\n        compareContext.setPathFilter(filePath);\n        comment.setCompareContext(compareContext);","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/ai/PullRequestHelper.java#L171-L207","documentation":"Generic guard in addCodeComment rejecting any attempt to anchor a code comment on a path not part of the pull request diff. It fires from the change-matching logic when filePath has no corresponding BlobChange, so the comment has no diff context.","triggerScenarios":"Thrown at server-core/src/main/java/io/onedev/server/ai/PullRequestHelper.java:189 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Restrict comments to files appearing in the pull request diff.","Use an issue or regular PR comment for files outside the diff."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}