[config] Treat default models_jar in ZipLib instead of analyze.py

Summary:
This diff moves the implementation that considers the default value of
--models to be Config.models_jar if it exists from analyze.py to ZipLib.

Reviewed By: cristianoc

Differential Revision: D4100421

fbshipit-source-id: 322fbcf
master
Josh Berdine 8 years ago committed by Facebook Github Bot
parent d76a7ef43a
commit 1bd6615abc

@ -250,8 +250,6 @@ class AnalyzerWrapper(object):
else: else:
if self.args.analyzer == config.ANALYZER_TRACING: if self.args.analyzer == config.ANALYZER_TRACING:
infer_options.append('-tracing') infer_options.append('-tracing')
if os.path.isfile(config.MODELS_JAR):
infer_options += ['-models', config.MODELS_JAR]
if self.args.debug: if self.args.debug:
infer_options += [ infer_options += [

@ -259,6 +259,9 @@ let etc_dir =
let models_dir = let models_dir =
lib_dir // specs_dir_name lib_dir // specs_dir_name
let models_jar =
lib_dir // "java" // "models.jar"
let cpp_models_dir = let cpp_models_dir =
let dir = bin_dir // Filename.parent_dir_name // "models" // "cpp" // "include" in let dir = bin_dir // Filename.parent_dir_name // "models" // "cpp" // "include" in
Utils.filename_to_absolute dir (* Normalize the path *) Utils.filename_to_absolute dir (* Normalize the path *)
@ -969,10 +972,9 @@ and ml_buckets =
- 'cpp' from C++ code" - 'cpp' from C++ code"
~symbols:ml_bucket_symbols ~symbols:ml_bucket_symbols
(* Add a zip file containing the Java models *)
and models_file = and models_file =
CLOpt.mk_string_opt ~deprecated:["models"] ~long:"models" ~f:resolve CLOpt.mk_string_opt ~deprecated:["models"] ~long:"models" ~f:resolve
~meta:"zip file" "" ~exes:CLOpt.[Analyze;Java] ~meta:"jar file" "Specify a jar file containing the Java models"
and models_mode = and models_mode =
CLOpt.mk_bool ~deprecated:["models_mode"; "-models_mode"] ~long:"models-mode" CLOpt.mk_bool ~deprecated:["models_mode"; "-models_mode"] ~long:"models-mode"

@ -92,6 +92,7 @@ val log_dir_name : string
val max_recursion : int val max_recursion : int
val meet_level : int val meet_level : int
val models_dir : string val models_dir : string
val models_jar : string
val ncpu : int val ncpu : int
val nsnotification_center_checker_backend : bool val nsnotification_center_checker_backend : bool
val os_type : os_type val os_type : os_type

@ -62,27 +62,36 @@ let load_data serializer path zip_library =
(** list of the zip files to search for specs files *) (** list of the zip files to search for specs files *)
let zip_libraries = let zip_libraries =
let mk_zip_lib models zip_filename = (* delay until load is called, to avoid stating/opening files at init time *)
{ models; zip_filename; zip_channel = lazy (Zip.open_in zip_filename) } in lazy (
let zip_libs = let mk_zip_lib models zip_filename =
if Config.use_jar_cache && Config.infer_cache <> None then { models; zip_filename; zip_channel = lazy (Zip.open_in zip_filename) } in
[] let zip_libs =
else if Config.use_jar_cache && Config.infer_cache <> None then
(* Order matters, jar files should appear in the order in which they should be searched for []
specs files. Config.specs_library is in reverse order of appearance on command line. *) else
let add_zip zip_libs fname = (* Order matters, jar files should appear in the order in which they should be searched for
if Filename.check_suffix fname ".jar" then specs files. Config.specs_library is in reverse order of appearance on command line. *)
(* fname is a zip of specs *) let add_zip zip_libs fname =
(mk_zip_lib false fname) :: zip_libs if Filename.check_suffix fname ".jar" then
else (* fname is a zip of specs *)
(* fname is a dir of specs *) (mk_zip_lib false fname) :: zip_libs
zip_libs in else
IList.fold_left add_zip [] Config.specs_library in (* fname is a dir of specs *)
match Config.models_file with zip_libs in
| None -> IList.fold_left add_zip [] Config.specs_library in
zip_libs let add_models file =
| Some file -> (mk_zip_lib true file) :: zip_libs in
(mk_zip_lib true file) :: zip_libs match Config.models_file with
| _ when Config.checkers ->
zip_libs
| Some file ->
add_models file
| None when Sys.file_exists Config.models_jar ->
add_models Config.models_jar
| None ->
zip_libs
)
(* Search path in the list of zip libraries and use a cache directory to save already (* Search path in the list of zip libraries and use a cache directory to save already
deserialized data *) deserialized data *)
@ -93,4 +102,4 @@ let load serializer path =
let opt = load_data serializer path zip_library in let opt = load_data serializer path zip_library in
if Option.is_some opt then opt if Option.is_some opt then opt
else loop other_libraries in else loop other_libraries in
loop zip_libraries loop (Lazy.force zip_libraries)

Loading…
Cancel
Save