Simplify logic surrounding building of Java & Kotlin parsers.#665
Simplify logic surrounding building of Java & Kotlin parsers.#665
Conversation
Also simplify logic related to log statements, markers & return value
| Path buildDirectory = baseDir.relativize(Paths.get(mavenProject.getBuild().getDirectory())); | ||
| Stream<SourceFile> sourceFiles = Stream.concat(parsedJava, parsedKotlin).filter(s -> !s.getSourcePath().startsWith(buildDirectory)); | ||
| Stream<SourceFile> sourceFiles = Stream.concat(parsedJava, parsedKotlin) | ||
| .filter(s -> !s.getSourcePath().startsWith(buildDirectory)) |
There was a problem hiding this comment.
Seems like it would be even better if we could filter out these generated sources before parsing them.
There was a problem hiding this comment.
I had thought we parse them such that we have their types available for attribution, as indicated on line 302 above. What improvement would you make here then?
There was a problem hiding this comment.
I suppose we have to test this, but these sources should still not need to be parsed, because the type attribution in other sources is via class files.
There was a problem hiding this comment.
I think it boils down to the question if getCompileClasspathElements() returns the classes compiled fom generated sources as well, which could depend on a number of different factors.
Right now we define generated sources as anything we find in the target/ directory, and parse those as source rather than compiled classes.
While I agree it might be interesting to not parse those generated sources as source files but rather only as classpath entries, I'm not entirely sure that would work in all cases, and verifying that would take more time than I currently have available. Are you ok merging this PR as-is to at least simplify the logic?
What's changed?
What's your motivation?
Readability suffered a bit when mentally trying to parse what we had before.
Then further improvements from there on as spotted.
Have you considered any alternatives or workarounds?
Could have merely gone for
javaParserBuilder.build()in ternary, but that didn't yet help readability much.