raydac / java-comment-preprocessor

preprocessor for computer languages with C-like comment format (C/C++/Java/Go)
Apache License 2.0
172 stars 27 forks source link

Maven plugin, empty global variable value provided in POM throws NPE #47

Closed Lilianne-Blaze closed 9 months ago

Lilianne-Blaze commented 10 months ago

Could you please add an option to ignore (treat as empty string?) variables that are set to empty or undeclared properties?

Here's an example:

I have plugin

                <groupId>io.github.git-commit-id</groupId>
                <artifactId>git-commit-id-maven-plugin</artifactId>
                <version>7.0.0</version>

Which sets properties including "${git.build.time}"

I have your plugin with

                    <vars>
                        <GIT_BUILD_TIME>${git.build.time}</GIT_BUILD_TIME>

Which is then used in the source like that

log.info("Build time: /*$GIT_BUILD_TIME$*/");

Everything works as intended

Now try to change it to

                        <GIT_BUILD_TIME></GIT_BUILD_TIME>

or

                        <GIT_BUILD_TIME>${git.build.timeUNDECLARED}</GIT_BUILD_TIME>

Both result in error:

Failed to execute goal com.igormaznitsa:jcp:7.1.0:preprocess (preprocess-sources) on project lbnet-maven-plugins-launch4j-wrp: Parameter is null -> [Help 1]

I tried < unknownVarAsFalse > true < /unknownVarAsFalse > but apparently it doesn't affect var declarations in pom, only var usage in sources.

Could you please add an option to handle that? " < allowEmptyVarDeclarations > " or something, to have them resolve to empty strings "" instead of throwing an error at buildtime?

p.s. Have I mentioned I really appreciate your work? I never understood why Java devs decided preprocessing is unnecessary.

raydac commented 10 months ago

map with global vars contains null as variable value for empty string so it is bug that the preprocessor gets NPE, I will fix and just will not be adding the variable (with log) and unknownVarAsFalse will be working

raydac commented 10 months ago

I have made fix for NPE so that now it should ignore such empty variable (with log message) and flag unknownVarAsFalse will be working, you can try snapshot version

Lilianne-Blaze commented 10 months ago

Thanks, pom:

      <unknownVarAsFalse>true</unknownVarAsFalse>

plus source:

        // #ifndef GIT_BUILD_TIME
        // #local GIT_BUILD_TIME = "unknown"
        // #endif
        log.info("Plugin build time: /*$GIT_BUILD_TIME$*/");

works just like it should

Lilianne-Blaze commented 10 months ago

If there are no problems with it, could you release it as 7.1.1?

raydac commented 9 months ago

7.1.1 is out