|
|
|
(*
|
|
|
|
* Copyright (c) 2016 - present Facebook, Inc.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the BSD style license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
*)
|
|
|
|
|
|
|
|
open! IStd
|
|
|
|
|
|
|
|
type mode = On | Off
|
|
|
|
|
|
|
|
type issue_desc =
|
|
|
|
{ id: string
|
|
|
|
; (* issue id *)
|
|
|
|
description: string
|
|
|
|
; (* Description in the error message *)
|
|
|
|
doc_url: string option
|
|
|
|
; mode: mode
|
|
|
|
; name: string option
|
|
|
|
; (* issue name, if no name is given name will be a readable version of id,
|
|
|
|
by removing underscores and capitalizing first letters of words *)
|
|
|
|
loc: Location.t
|
|
|
|
; (* location in the code *)
|
|
|
|
severity: Exceptions.err_kind
|
|
|
|
; suggestion: string option
|
|
|
|
(* an optional suggestion or correction *) }
|
|
|
|
|
|
|
|
let string_of_mode m = match m with On -> "On" | Off -> "Off"
|
|
|
|
|
|
|
|
let pp_issue fmt issue =
|
|
|
|
Format.fprintf fmt "{@\n Id = %s@\n" issue.id ;
|
|
|
|
Format.fprintf fmt "{ Name = %s@\n" (Option.value ~default:"" issue.name) ;
|
|
|
|
Format.fprintf fmt " Severity = %s@\n" (Exceptions.err_kind_string issue.severity) ;
|
|
|
|
Format.fprintf fmt " Mode = %s@\n" (string_of_mode issue.mode) ;
|
|
|
|
Format.fprintf fmt " Description = %s@\n" issue.description ;
|
|
|
|
Format.fprintf fmt " Suggestion = %s@\n" (Option.value ~default:"" issue.suggestion) ;
|
|
|
|
Format.fprintf fmt " Docs URL = %s@\n" (Option.value ~default:"" issue.doc_url) ;
|
|
|
|
Format.fprintf fmt " Loc = %s@\n" (Location.to_string issue.loc) ;
|
|
|
|
Format.fprintf fmt "}@\n"
|
|
|
|
|
|
|
|
|
|
|
|
let should_run_check mode =
|
|
|
|
match mode with
|
|
|
|
| On ->
|
|
|
|
true
|
|
|
|
| Off ->
|
|
|
|
Config.debug_mode || Config.debug_exceptions || not Config.filtering
|
|
|
|
|