From 3ed48e31963c35fa6ed01d7ea41073b5a00d7bc7 Mon Sep 17 00:00:00 2001 From: Jules Villard Date: Fri, 7 Jul 2017 09:42:48 -0700 Subject: [PATCH] [mvn] handle weird xml Summary: Fixes #683 Disclaimer: I don't know what XML namespaces/namespace prefixes are, but this seems to do the trick. Reviewed By: mbouaziz Differential Revision: D5381480 fbshipit-source-id: 3da16e7 --- infer/src/integration/Maven.ml | 11 +++++++--- .../module2parent/module2/pom.xml | 22 +++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/infer/src/integration/Maven.ml b/infer/src/integration/Maven.ml index 14af88d7e..2699b8612 100644 --- a/infer/src/integration/Maven.ml +++ b/infer/src/integration/Maven.ml @@ -116,11 +116,16 @@ let add_infer_profile mvn_pom infer_pom = let ic = In_channel.create mvn_pom in let with_oc out_chan = let with_ic () = - let xml_in = Xmlm.make_input ~strip:false (`Channel ic) in - let xml_out = Xmlm.make_output ~nl:true (`Channel out_chan) in + let xml_in = Xmlm.make_input ~strip:false (`Channel ic) + ~ns:(fun ns -> Some ns) (* be generous with namespaces *) in + let xml_out = Xmlm.make_output ~nl:true (`Channel out_chan) + ~ns_prefix:(fun prefix -> Some prefix) (* be generous with namespaces *) in add_infer_profile_to_xml (Filename.dirname mvn_pom) xml_in xml_out in protect ~f:with_ic ~finally:(fun () -> In_channel.close ic) in - Utils.with_file_out infer_pom ~f:with_oc + try Utils.with_file_out infer_pom ~f:with_oc + with Xmlm.Error ((line, col), error) as exn -> + L.external_error "%s:%d:%d: ERROR: %s@." mvn_pom line col (Xmlm.error_message error); + raise exn let add_profile_to_pom_in_directory dir = (* Even though there is a "-f" command-line arguments to change the config file Maven reads from, diff --git a/infer/tests/build_systems/codetoanalyze/mvn/app_with_submodules/module2parent/module2/pom.xml b/infer/tests/build_systems/codetoanalyze/mvn/app_with_submodules/module2parent/module2/pom.xml index 3096ed634..699190d67 100644 --- a/infer/tests/build_systems/codetoanalyze/mvn/app_with_submodules/module2parent/module2/pom.xml +++ b/infer/tests/build_systems/codetoanalyze/mvn/app_with_submodules/module2parent/module2/pom.xml @@ -10,4 +10,26 @@ jar 1.0-SNAPSHOT module2 + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + true + + + + + + + + + + + +