Reporting cleanup 18: move linters_def_file from reporting to issue type

Reviewed By: jeremydubreil

Differential Revision: D9654080

fbshipit-source-id: 4bba80789
master
Mehdi Bouaziz 6 years ago committed by Facebook Github Bot
parent 46cd49df8d
commit 0cb31a8057

@ -79,7 +79,8 @@ exception Eradicate of IssueType.t * Localise.error_desc
exception Field_not_null_checked of Localise.error_desc * L.ocaml_pos
exception
Frontend_warning of (string * string option * string option) * Localise.error_desc * L.ocaml_pos
Frontend_warning of
(string * string option * string option * string option) * Localise.error_desc * L.ocaml_pos
exception Checkers of IssueType.t * Localise.error_desc
@ -321,8 +322,8 @@ let recognize_exception exn =
; visibility= Exn_user
; severity= Some Warning
; category= Nocat }
| Frontend_warning ((name, hum, doc_url), desc, ocaml_pos) ->
{ name= IssueType.from_string name ?hum ?doc_url
| Frontend_warning ((name, hum, doc_url, linters_def_file), desc, ocaml_pos) ->
{ name= IssueType.from_string name ?hum ?doc_url ?linters_def_file
; description= desc
; ocaml_pos= Some ocaml_pos
; visibility= Exn_user

@ -81,7 +81,9 @@ exception Checkers of IssueType.t * Localise.error_desc
exception
Frontend_warning of
(string * string option * string option) * Localise.error_desc * Logging.ocaml_pos
(string * string option * string option * string option)
* Localise.error_desc
* Logging.ocaml_pos
exception Inherently_dangerous_function of Localise.error_desc

@ -8,31 +8,25 @@
open! IStd
module L = Logging
type log_t =
?ltr:Errlog.loc_trace
-> ?linters_def_file:string
-> ?access:string
-> ?extras:Jsonbug_t.extra
-> exn
-> unit
type log_t = ?ltr:Errlog.loc_trace -> ?access:string -> ?extras:Jsonbug_t.extra -> exn -> unit
let log_issue_from_errlog procname ~clang_method_kind severity err_log ~loc ~node ~session ~ltr
~linters_def_file ~access ~extras exn =
~access ~extras exn =
let issue_type = (Exceptions.recognize_exception exn).name in
if (not Config.filtering) (* no-filtering takes priority *) || issue_type.IssueType.enabled then
let doc_url = issue_type.doc_url in
let linters_def_file = issue_type.linters_def_file in
Errlog.log_issue procname ~clang_method_kind severity err_log ~loc ~node ~session ~ltr
~linters_def_file ~doc_url ~access ~extras exn
let log_frontend_issue procname severity errlog ~loc ~node_key ~ltr ~linters_def_file exn =
let log_frontend_issue procname severity errlog ~loc ~node_key ~ltr exn =
let node = Errlog.FrontendNode {node_key} in
log_issue_from_errlog procname ~clang_method_kind:None severity errlog ~loc ~node ~session:0 ~ltr
~linters_def_file ~access:None ~extras:None exn
~access:None ~extras:None exn
let log_issue_from_summary severity summary ~node ~session ~loc ~ltr ?linters_def_file ?access
?extras exn =
let log_issue_from_summary severity summary ~node ~session ~loc ~ltr ?access ?extras exn =
let attrs = Summary.get_attributes summary in
let procname = attrs.proc_name in
let is_java_generated_method =
@ -52,7 +46,7 @@ let log_issue_from_summary severity summary ~node ~session ~loc ~ltr ?linters_de
let err_log = Summary.get_err_log summary in
let clang_method_kind = Some attrs.clang_method_kind in
log_issue_from_errlog procname ~clang_method_kind severity err_log ~loc ~node ~session ~ltr
~linters_def_file ~access ~extras exn
~access ~extras exn
let log_issue_deprecated_using_state severity proc_name ?node ?loc ?ltr exn =
@ -73,10 +67,9 @@ let log_issue_deprecated_using_state severity proc_name ?node ?loc ?ltr exn =
Typ.Procname.pp proc_name Typ.Procname.pp proc_name
let log_issue_from_summary_simplified severity summary ~loc ?(ltr = []) ?linters_def_file ?access
?extras exn =
log_issue_from_summary severity summary ~node:Errlog.UnknownNode ~session:0 ~loc ~ltr
?linters_def_file ?access ?extras exn
let log_issue_from_summary_simplified severity summary ~loc ?(ltr = []) ?access ?extras exn =
log_issue_from_summary severity summary ~node:Errlog.UnknownNode ~session:0 ~loc ~ltr ?access
?extras exn
let log_error = log_issue_from_summary_simplified Exceptions.Error
@ -88,7 +81,7 @@ let log_issue_external procname severity ~loc ~ltr ?access issue_type error_mess
let errlog = IssueLog.get_errlog procname in
let node = Errlog.UnknownNode in
log_issue_from_errlog procname ~clang_method_kind:None severity errlog ~loc ~node ~session:0 ~ltr
~linters_def_file:None ~access ~extras:None exn
~access ~extras:None exn
let log_error_using_state summary exn =
@ -96,8 +89,7 @@ let log_error_using_state summary exn =
let session = State.get_session () in
let loc = State.get_loc () in
let ltr = State.get_loc_trace () in
log_issue_from_summary Exceptions.Error summary ~node ~session ~loc ~ltr ?linters_def_file:None
?access:None exn
log_issue_from_summary Exceptions.Error summary ~node ~session ~loc ~ltr ?access:None exn
let is_suppressed ?(field_name = None) tenv proc_desc kind =

@ -9,13 +9,7 @@ open! IStd
(** Type of functions to report issues to the error_log in a spec. *)
type log_t =
?ltr:Errlog.loc_trace
-> ?linters_def_file:string
-> ?access:string
-> ?extras:Jsonbug_t.extra
-> exn
-> unit
type log_t = ?ltr:Errlog.loc_trace -> ?access:string -> ?extras:Jsonbug_t.extra -> exn -> unit
val log_issue_deprecated_using_state :
Exceptions.severity
@ -36,7 +30,6 @@ val log_frontend_issue :
-> loc:Location.t
-> node_key:Procdesc.NodeKey.t
-> ltr:Errlog.loc_trace
-> linters_def_file:string option
-> exn
-> unit
(** Report a frontend issue of a given kind in the given error log. *)

@ -10,12 +10,17 @@ open! IStd
we want to keep track of the list of all the issues ever declared. *)
module Unsafe : sig
type t = private
{unique_id: string; mutable enabled: bool; mutable hum: string; mutable doc_url: string option}
{ unique_id: string
; mutable enabled: bool
; mutable hum: string
; mutable doc_url: string option
; mutable linters_def_file: string option }
[@@deriving compare]
val equal : t -> t -> bool
val from_string : ?enabled:bool -> ?hum:string -> ?doc_url:string -> string -> t
val from_string :
?enabled:bool -> ?hum:string -> ?doc_url:string -> ?linters_def_file:string -> string -> t
val all_issues : unit -> t list
@ -26,7 +31,8 @@ end = struct
{ unique_id: string
; mutable enabled: bool
; mutable hum: string
; mutable doc_url: string option }
; mutable doc_url: string option
; mutable linters_def_file: string option }
let compare {unique_id= id1} {unique_id= id2} = String.compare id1 id2
@ -56,15 +62,16 @@ end = struct
2., but issues of type 2. have not yet been defined. Thus, we record only there [enabled]
status definitely. The [hum]an-readable description can be updated when we encounter the
definition of the issue type, eg in AL. *)
let from_string ?(enabled = true) ?hum:hum0 ?doc_url unique_id =
let from_string ?(enabled = true) ?hum:hum0 ?doc_url ?linters_def_file unique_id =
let hum = match hum0 with Some str -> str | _ -> prettify unique_id in
let issue = {unique_id; enabled; hum; doc_url} in
let issue = {unique_id; enabled; hum; doc_url; linters_def_file} in
try
let old = IssueSet.find issue !all_issues in
(* update human-readable string in case it was supplied this time, but keep the previous
value of enabled (see doc comment) *)
if Option.is_some hum0 then old.hum <- hum ;
if Option.is_some doc_url then old.doc_url <- doc_url ;
if Option.is_some linters_def_file then old.linters_def_file <- linters_def_file ;
old
with Caml.Not_found ->
all_issues := IssueSet.add issue !all_issues ;

@ -9,7 +9,11 @@ open! IStd
(** type of string used for localisation *)
type t = private
{unique_id: string; mutable enabled: bool; mutable hum: string; mutable doc_url: string option}
{ unique_id: string
; mutable enabled: bool
; mutable hum: string
; mutable doc_url: string option
; mutable linters_def_file: string option }
[@@deriving compare]
val equal : t -> t -> bool
@ -20,7 +24,8 @@ val all_issues : unit -> t list
val pp : Format.formatter -> t -> unit
(** pretty print a localised string *)
val from_string : ?enabled:bool -> ?hum:string -> ?doc_url:string -> string -> t
val from_string :
?enabled:bool -> ?hum:string -> ?doc_url:string -> ?linters_def_file:string -> string -> t
(** create from an ordinary string *)
val set_enabled : t -> bool -> unit

@ -446,7 +446,7 @@ let log_frontend_issue method_decl_opt (node : Ctl_parser_types.ast_node)
in
let exn =
Exceptions.Frontend_warning
((issue_desc.id, issue_desc.name, issue_desc.doc_url), err_desc, __POS__)
((issue_desc.id, issue_desc.name, issue_desc.doc_url, linters_def_file), err_desc, __POS__)
in
let trace = [Errlog.make_trace_element 0 issue_desc.loc "" []] in
let key_str =
@ -458,7 +458,7 @@ let log_frontend_issue method_decl_opt (node : Ctl_parser_types.ast_node)
in
let node_key = Procdesc.NodeKey.of_frontend_node_key key_str in
Reporting.log_frontend_issue procname issue_desc.severity errlog exn ~loc:issue_desc.loc
~ltr:trace ~node_key ~linters_def_file
~ltr:trace ~node_key
let fill_issue_desc_info_and_log context ~witness ~current_node (issue_desc : CIssue.issue_desc)

Loading…
Cancel
Save