Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Use project-relative path when calculating gitlab message fingerprint
  • Loading branch information
Fergus Longley committed May 24, 2024
commit 3d972c8f63573fc87b0c0642529f5bb44cb25e5c
10 changes: 5 additions & 5 deletions crates/ruff_linter/src/message/gitlab.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ impl Serialize for SerializedMessages<'_> {
|project_dir| relativize_path_to(message.filename(), project_dir),
);

let mut message_fingerprint = fingerprint(message, 0);
let mut message_fingerprint = fingerprint(message, &path, 0);

// Make sure that we do not get a fingerprint that is already in use
// by adding in the previously generated one.
while fingerprints.contains(&message_fingerprint) {
message_fingerprint = fingerprint(message, message_fingerprint);
message_fingerprint = fingerprint(message, &path, message_fingerprint);
}
fingerprints.insert(message_fingerprint);

Expand All @@ -109,20 +109,20 @@ impl Serialize for SerializedMessages<'_> {
}

/// Generate a unique fingerprint to identify a violation.
fn fingerprint(message: &Message, salt: u64) -> u64 {
fn fingerprint(message: &Message, project_path: &str, salt: u64) -> u64 {
let Message {
kind,
range: _,
fix: _fix,
file,
file: _,
noqa_offset: _,
} = message;

let mut hasher = DefaultHasher::new();

salt.hash(&mut hasher);
kind.name.hash(&mut hasher);
file.name().hash(&mut hasher);
project_path.hash(&mut hasher);

hasher.finish()
}
Expand Down