diff --git a/scanpipe/pipes/jvm.py b/scanpipe/pipes/jvm.py index 19dba92e6c..5cd420a274 100644 --- a/scanpipe/pipes/jvm.py +++ b/scanpipe/pipes/jvm.py @@ -136,7 +136,11 @@ def get_normalized_path(cls, path, extension): ) path = Path(path.strip("/")) class_name = path.name - if "$" in class_name: # inner class + # Handled generated logger class + # https://github.com/aboutcode-org/scancode.io/issues/1994 + if class_name.endswith("_$logger.class"): + class_name, _, _ = class_name.partition("_$logger.class") + elif "$" in class_name: # inner class class_name, _, _ = class_name.partition("$") else: class_name, _, _ = class_name.partition(".") # plain .class diff --git a/scanpipe/tests/pipes/test_jvm.py b/scanpipe/tests/pipes/test_jvm.py index a7d9ebf982..f7ecfb853c 100644 --- a/scanpipe/tests/pipes/test_jvm.py +++ b/scanpipe/tests/pipes/test_jvm.py @@ -94,6 +94,12 @@ def test_scanpipe_pipes_jvm_get_normalized_java_path_with_inner_class(self): ) self.assertEqual("foo/org/common/Bar.java", njp) + def test_scanpipe_pipes_jvm_get_normalized_java_path_with_logging_annotation(self): + njp = jvm.JavaLanguage.get_normalized_path( + "foo/org/common/Bar_$logger.class", ".java" + ) + self.assertEqual("foo/org/common/Bar.java", njp) + def test_scanpipe_pipes_jvm_get_fully_qualified_java_path(self): fqjp = jvm.get_fully_qualified_path("org.common", "Bar.java") self.assertEqual("org/common/Bar.java", fqjp)