//===---------- IssueHash.h - Generate identification hashes ----*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_STATICANALYZER_CORE_ISSUE_HASH_H
#define LLVM_CLANG_STATICANALYZER_CORE_ISSUE_HASH_H

#include "llvm/ADT/SmallString.h"

namespace clang {
class Decl;
class SourceManager;
class FullSourceLoc;
class LangOptions;

/// \brief Get an MD5 hash to help identify bugs.
///
/// This function returns a hash that helps identify bugs within a source file.
/// This identification can be utilized to diff diagnostic results on different
/// snapshots of a projects, or maintain a database of suppressed diagnotics.
///
/// The hash contains the normalized text of the location associated with the
/// diagnostic. Normalization means removing the whitespaces. The associated
/// location is the either the last location of a diagnostic path or a uniqueing
/// location. The bugtype and the name of the checker is also part of the hash.
/// The last component is the string representation of the enclosing declaration
/// of the associated location.
/// 
/// In case a new hash is introduced, the old one should still be maintained for
/// a while. One should not introduce a new hash for every change, it is
/// possible to introduce experimental hashes that may change in the future.
/// Such hashes should be marked as experimental using a comment in the plist
/// files.
llvm::SmallString<32> GetIssueHash(const SourceManager &SM,
                                   FullSourceLoc &IssueLoc,
                                   llvm::StringRef CheckerName,
                                   llvm::StringRef BugType, const Decl *D,
                                   const LangOptions &LangOpts);

/// \brief Get the string representation of issue hash. See GetIssueHash() for
/// more information.
std::string GetIssueString(const SourceManager &SM, FullSourceLoc &IssueLoc,
                           llvm::StringRef CheckerName, llvm::StringRef BugType,
                           const Decl *D, const LangOptions &LangOpts);
} // namespace clang

#endif
