From 1c0f242e8bb67d42cf6e941b79597fc40c8612f2 Mon Sep 17 00:00:00 2001 From: Jules Villard Date: Thu, 11 Jun 2020 06:43:31 -0700 Subject: [PATCH] [help] implement "--list-issue-types" Summary: ``` $ infer help --list-issue-types Format: Issue type unique identifier:Human-readable version:Visibility:Default severity:Enabled:Checker:Documentation URL (AL only):Linters definition file (AL only) ARRAY_OUT_OF_BOUNDS_L1:Array Out Of Bounds L1:Developer:ERROR:false:biabduction:: ARRAY_OUT_OF_BOUNDS_L2:Array Out Of Bounds L2:Developer:WARNING:false:biabduction:: ARRAY_OUT_OF_BOUNDS_L3:Array Out Of Bounds L3:Developer:WARNING:false:biabduction:: Abduction_case_not_implemented:Abduction Case Not Implemented:Developer:ERROR:true:biabduction:: ... ``` Reviewed By: skcho Differential Revision: D21934371 fbshipit-source-id: 77df2a40f --- infer/src/base/IssueType.mli | 2 ++ infer/src/infer.ml | 5 +++-- infer/src/integration/Help.ml | 29 ++++++++++++++++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/infer/src/base/IssueType.mli b/infer/src/base/IssueType.mli index 24e395d64..a8c837493 100644 --- a/infer/src/base/IssueType.mli +++ b/infer/src/base/IssueType.mli @@ -14,6 +14,8 @@ type visibility = | Silent (** never add to error log *) [@@deriving compare, equal] +val string_of_visibility : visibility -> string + (** severity of the report *) type severity = Like | Info | Advice | Warning | Error [@@deriving compare, equal, enumerate] diff --git a/infer/src/infer.ml b/infer/src/infer.ml index 1d50a0f90..81353195c 100644 --- a/infer/src/infer.ml +++ b/infer/src/infer.ml @@ -169,8 +169,9 @@ let () = then ( if Config.list_checkers then Help.list_checkers () ; if Config.list_issue_types then Help.list_issue_types () ; - Help.show_checkers Config.help_checker ; - Help.show_issue_types Config.help_issue_type ; + if not (List.is_empty Config.help_checker) then Help.show_checkers Config.help_checker ; + if not (List.is_empty Config.help_issue_type) then + Help.show_issue_types Config.help_issue_type ; Option.iter Config.write_website ~f:(fun website_root -> Help.write_website ~website_root) ; () ) else diff --git a/infer/src/integration/Help.ml b/infer/src/integration/Help.ml index 24f643feb..ae90e942b 100644 --- a/infer/src/integration/Help.ml +++ b/infer/src/integration/Help.ml @@ -6,10 +6,37 @@ *) open! IStd +module L = Logging let list_checkers () = assert false -let list_issue_types () = assert false +let list_issue_types () = + L.progress + "@[Format:@\n\ + Issue type unique identifier:Human-readable version:Visibility:Default \ + severity:Enabled:Checker:Documentation URL (AL only):Linters definition file (AL only)@\n\ + @\n\ + @]%!" ; + L.result "@[" ; + IssueType.all_issues () + |> List.iter + ~f:(fun ({ IssueType.unique_id + ; checker + ; visibility + ; default_severity + ; enabled + ; hum + ; doc_url + ; linters_def_file }[@warning "+9"]) + -> + L.result "%s:%s:%s:%s:%b:%s:%s:%s@;" unique_id hum + (IssueType.string_of_visibility visibility) + (IssueType.string_of_severity default_severity) + enabled (Checker.get_id checker) + (Option.value ~default:"" doc_url) + (Option.value ~default:"" linters_def_file) ) ; + L.result "@]%!" + let show_checkers _ = assert false