Quantcast

[PATCH] Add TREAT_WARNINGS_AS_ERROR option

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[PATCH] Add TREAT_WARNINGS_AS_ERROR option

Gautier
Hi list;

As stated on Github[1], I would like to add an option behaving similarly
to compilers' -Werror option: any warning generated during Doxygen
execution will abort it immediately.

This option is, in my opinion, valuable to keep documentation up-to-date
with code changes, specially when multiple people are working altogether.
I will not blame anyone to not think all consequence of a code change,
but scripts can help him/her from breaking anything:

* strict compiler options (-Werror, -Wall, etc.) prevents at least some
quick&dirty code and obvious bugs. Compilers will warn beginners about
code which will not work (out of bounds errors, etc.), but most of the
time it's simply about a typo / useless dead code.
* Git hook preventing users from pushing invalid commits [2]. We are
intensively using git submodules for instance - it's quite easy to push
an invalid submodule reference to git:
     * if you forgot to run "git submodule update --recursive" after
pulling remote changes following by a "git commit -a", leading to
unwilling submodule downgrading.
     * if you're referencing a new submodule revision... which you
forgot to push first!
* To have better code consistency, following a single code style using
clang-format[3], similarly to what systemd does[4].

I think that all of us already encountered one or several of these
issues at least once ;-). Having tools checking these errors
automatically allow me not to worry about it anymore.
Our documentation contains nowadays many errors simply because Doxygen
let us do that and we did not look at """inoffensive""" warnings, since
they are not preventing us from continuing - they are lost in the
verbosity of build logs.

I am the only one which would like such an option, and if so: how do you
keep your documentation up-to-date?

Cheers,

Gautier

[1] https://github.com/doxygen/doxygen/pull/412
[2] https://gist.github.com/bagage/bdca3d4b66d43db7a5e3
[3] http://clang.llvm.org/docs/ClangFormat.html
[4] https://github.com/systemd/systemd/blob/master/autogen.sh

------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
_______________________________________________
Doxygen-develop mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-develop
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH] Add TREAT_WARNINGS_AS_ERROR option

albert
In principle all the errors and warnings doxygen gives should be removed by the engineers.

Doxygen distinguish between errors and warnings, where errors possibly corrupt the documentation building or are serious enough, in the eyes of the doxygen developers to stop the generation of the documentation. In case of an error the doxygen developer can also choose to give an error message but to continue anyway.

When we would have the possibility to promote all the warnings to errors (and we should also stop at all errors that currently don't stop), it would mean that, when using the option, after each error a rerun is necessary. I think this is a bit overdone.
I see some possibilities:
- in case doxygen discovers warnings it does not finish with exit code 0 but with e.g. exit code 2 (and use exit code 1 for the errors on which it now already stops).
- when using the proposed option the message is given as an error, but the process does not stop. I don't see this as an improvement as one can now catch the warnings in a log file and check them.
- all warnings get a number and the user can "promote" in the Doxyfile some warnings to, fatal, errors. This would be quite a big effort as all the messages have to be categorized (I've been thinking about this some time ago, but have not started to implement this as it is a lot of work and does not bring enough in my opinion, a quick estimation 700 messages to be checked).

The procedure I follow more or less is: Each time I'm building (overnight builds) the software I catch the warnings and errors in a warnings.log file. When this warnings.log file contains a message (or a new message compared to the last time the build was done) an email is send to the engineer who, last. changed the source file.


Albert

On Thu, Dec 3, 2015 at 9:34 PM, Gautier <[hidden email]> wrote:
Hi list;

As stated on Github[1], I would like to add an option behaving similarly
to compilers' -Werror option: any warning generated during Doxygen
execution will abort it immediately.

This option is, in my opinion, valuable to keep documentation up-to-date
with code changes, specially when multiple people are working altogether.
I will not blame anyone to not think all consequence of a code change,
but scripts can help him/her from breaking anything:

* strict compiler options (-Werror, -Wall, etc.) prevents at least some
quick&dirty code and obvious bugs. Compilers will warn beginners about
code which will not work (out of bounds errors, etc.), but most of the
time it's simply about a typo / useless dead code.
* Git hook preventing users from pushing invalid commits [2]. We are
intensively using git submodules for instance - it's quite easy to push
an invalid submodule reference to git:
     * if you forgot to run "git submodule update --recursive" after
pulling remote changes following by a "git commit -a", leading to
unwilling submodule downgrading.
     * if you're referencing a new submodule revision... which you
forgot to push first!
* To have better code consistency, following a single code style using
clang-format[3], similarly to what systemd does[4].

I think that all of us already encountered one or several of these
issues at least once ;-). Having tools checking these errors
automatically allow me not to worry about it anymore.
Our documentation contains nowadays many errors simply because Doxygen
let us do that and we did not look at """inoffensive""" warnings, since
they are not preventing us from continuing - they are lost in the
verbosity of build logs.

I am the only one which would like such an option, and if so: how do you
keep your documentation up-to-date?

Cheers,

Gautier

[1] https://github.com/doxygen/doxygen/pull/412
[2] https://gist.github.com/bagage/bdca3d4b66d43db7a5e3
[3] http://clang.llvm.org/docs/ClangFormat.html
[4] https://github.com/systemd/systemd/blob/master/autogen.sh

------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
_______________________________________________
Doxygen-develop mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-develop


------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
_______________________________________________
Doxygen-develop mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-develop
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH] Add TREAT_WARNINGS_AS_ERROR option

Gautier
Hi Albert,

Thanks for your detailled opinion. Please see my inlined remarks below.

Gautier

> On 06 Dec 2015, at 12:03, Albert <[hidden email]> wrote:
>
> In principle all the errors and warnings doxygen gives should be removed by the engineers.
>
> Doxygen distinguish between errors and warnings, where errors possibly corrupt the documentation building or are serious enough, in the eyes of the doxygen developers to stop the generation of the documentation. In case of an error the doxygen developer can also choose to give an error message but to continue anyway.
Should not it be a warning then? An error should have a consistent behavior during all processing, should it not?
>
> When we would have the possibility to promote all the warnings to errors (and we should also stop at all errors that currently don't stop), it would mean that, when using the option, after each error a rerun is necessary. I think this is a bit overdone.
Well, that's the current behavior of -Werror for compilers. Indeed on first execution you will have a lot of stop&retry, but once it is done, you should not have many errors. And on first execution, you can temporary use -Wno-error to see all errors immediately if needed.
> I see some possibilities:
> - in case doxygen discovers warnings it does not finish with exit code 0 but with e.g. exit code 2 (and use exit code 1 for the errors on which it now already stops).
This solution suits me but if that possibility is adopted it might break many build systems where doxygen is expected to exit successfully in any case. Would it be a problem?
> - when using the proposed option the message is given as an error, but the process does not stop. I don't see this as an improvement as one can now catch the warnings in a log file and check them.
I am not sure to understand what do you mean there - proposed patch should exit on first warning?
> - all warnings get a number and the user can "promote" in the Doxyfile some warnings to, fatal, errors. This would be quite a big effort as all the messages have to be categorized (I've been thinking about this some time ago, but have not started to implement this as it is a lot of work and does not bring enough in my opinion, a quick estimation 700 messages to be checked).
Well, I agree with you that it would be both an ideal solution and a big effort which does not bring enough ;-).
>
> The procedure I follow more or less is: Each time I'm building (overnight builds) the software I catch the warnings and errors in a warnings.log file. When this warnings.log file contains a message (or a new message compared to the last time the build was done) an email is send to the engineer who, last. changed the source file.
That's the step I want to avoid: having an external script/tool checking doxygen output to see if anything went wrong, while doxygen could tell me directly if I broke something. However this is more or less what I am aiming for.

>
>
> Albert
>
> On Thu, Dec 3, 2015 at 9:34 PM, Gautier <[hidden email]> wrote:
> Hi list;
>
> As stated on Github[1], I would like to add an option behaving similarly
> to compilers' -Werror option: any warning generated during Doxygen
> execution will abort it immediately.
>
> This option is, in my opinion, valuable to keep documentation up-to-date
> with code changes, specially when multiple people are working altogether.
> I will not blame anyone to not think all consequence of a code change,
> but scripts can help him/her from breaking anything:
>
> * strict compiler options (-Werror, -Wall, etc.) prevents at least some
> quick&dirty code and obvious bugs. Compilers will warn beginners about
> code which will not work (out of bounds errors, etc.), but most of the
> time it's simply about a typo / useless dead code.
> * Git hook preventing users from pushing invalid commits [2]. We are
> intensively using git submodules for instance - it's quite easy to push
> an invalid submodule reference to git:
>      * if you forgot to run "git submodule update --recursive" after
> pulling remote changes following by a "git commit -a", leading to
> unwilling submodule downgrading.
>      * if you're referencing a new submodule revision... which you
> forgot to push first!
> * To have better code consistency, following a single code style using
> clang-format[3], similarly to what systemd does[4].
>
> I think that all of us already encountered one or several of these
> issues at least once ;-). Having tools checking these errors
> automatically allow me not to worry about it anymore.
> Our documentation contains nowadays many errors simply because Doxygen
> let us do that and we did not look at """inoffensive""" warnings, since
> they are not preventing us from continuing - they are lost in the
> verbosity of build logs.
>
> I am the only one which would like such an option, and if so: how do you
> keep your documentation up-to-date?
>
> Cheers,
>
> Gautier
>
> [1] https://github.com/doxygen/doxygen/pull/412
> [2] https://gist.github.com/bagage/bdca3d4b66d43db7a5e3
> [3] http://clang.llvm.org/docs/ClangFormat.html
> [4] https://github.com/systemd/systemd/blob/master/autogen.sh
>
> ------------------------------------------------------------------------------
> Go from Idea to Many App Stores Faster with Intel(R) XDK
> Give your users amazing mobile app experiences with Intel(R) XDK.
> Use one codebase in this all-in-one HTML5 development environment.
> Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
> http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
> _______________________________________________
> Doxygen-develop mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/doxygen-develop
>


------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
_______________________________________________
Doxygen-develop mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-develop
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH] Add TREAT_WARNINGS_AS_ERROR option

albert
Hi Gautier,

Thanks for you responses to my suggestions.
1) continuation on errors.
   In principle I think you are right, though the word error has a higher "visibility" than warning. An example where an error is given but the process continues is when the image from the PROJECT_LOGO does not exist. This significantly influences the output.
   So maybe either we should have some more categories:
   - fatal same as current error ans stop generation (will break some builds as some people , I do it myself, search for the word 'error' at the beginning of the sentence
   - error same as current error, but process is continuing
   - warning as it is now
2) extra exit code for warnings
   I see you objection that it possibly will break, from the compatibility point of view is probably a less good idea
3) Proposed patch does stop at first warning, my idea was more replacing the word "warning" by "error" for higher "visibility".
4) giving warnings and errors a number
   we agree on this
5) inspecting the warnings.log file
   I think in any case one uses a build system to build the code and in one way or another the build errors will be reported as well., possibly by an external tool as well.
   Checking the warnings.log file would only be a test whether or not the warnings file is empty or not, displaying the warnings and abort the build process. So I don't see this as a big problem all build systems will support something like this.

Albert



On Tue, Dec 8, 2015 at 10:35 AM, Gautier Pelloux-Prayer <[hidden email]> wrote:
Hi Albert,

Thanks for your detailled opinion. Please see my inlined remarks below.

Gautier

> On 06 Dec 2015, at 12:03, Albert <[hidden email]> wrote:
>
> In principle all the errors and warnings doxygen gives should be removed by the engineers.
>
> Doxygen distinguish between errors and warnings, where errors possibly corrupt the documentation building or are serious enough, in the eyes of the doxygen developers to stop the generation of the documentation. In case of an error the doxygen developer can also choose to give an error message but to continue anyway.
Should not it be a warning then? An error should have a consistent behavior during all processing, should it not?
>
> When we would have the possibility to promote all the warnings to errors (and we should also stop at all errors that currently don't stop), it would mean that, when using the option, after each error a rerun is necessary. I think this is a bit overdone.
Well, that's the current behavior of -Werror for compilers. Indeed on first execution you will have a lot of stop&retry, but once it is done, you should not have many errors. And on first execution, you can temporary use -Wno-error to see all errors immediately if needed.
> I see some possibilities:
> - in case doxygen discovers warnings it does not finish with exit code 0 but with e.g. exit code 2 (and use exit code 1 for the errors on which it now already stops).
This solution suits me but if that possibility is adopted it might break many build systems where doxygen is expected to exit successfully in any case. Would it be a problem?
> - when using the proposed option the message is given as an error, but the process does not stop. I don't see this as an improvement as one can now catch the warnings in a log file and check them.
I am not sure to understand what do you mean there - proposed patch should exit on first warning?
> - all warnings get a number and the user can "promote" in the Doxyfile some warnings to, fatal, errors. This would be quite a big effort as all the messages have to be categorized (I've been thinking about this some time ago, but have not started to implement this as it is a lot of work and does not bring enough in my opinion, a quick estimation 700 messages to be checked).
Well, I agree with you that it would be both an ideal solution and a big effort which does not bring enough ;-).
>
> The procedure I follow more or less is: Each time I'm building (overnight builds) the software I catch the warnings and errors in a warnings.log file. When this warnings.log file contains a message (or a new message compared to the last time the build was done) an email is send to the engineer who, last. changed the source file.
That's the step I want to avoid: having an external script/tool checking doxygen output to see if anything went wrong, while doxygen could tell me directly if I broke something. However this is more or less what I am aiming for.
>
>
> Albert
>
> On Thu, Dec 3, 2015 at 9:34 PM, Gautier <[hidden email]> wrote:
> Hi list;
>
> As stated on Github[1], I would like to add an option behaving similarly
> to compilers' -Werror option: any warning generated during Doxygen
> execution will abort it immediately.
>
> This option is, in my opinion, valuable to keep documentation up-to-date
> with code changes, specially when multiple people are working altogether.
> I will not blame anyone to not think all consequence of a code change,
> but scripts can help him/her from breaking anything:
>
> * strict compiler options (-Werror, -Wall, etc.) prevents at least some
> quick&dirty code and obvious bugs. Compilers will warn beginners about
> code which will not work (out of bounds errors, etc.), but most of the
> time it's simply about a typo / useless dead code.
> * Git hook preventing users from pushing invalid commits [2]. We are
> intensively using git submodules for instance - it's quite easy to push
> an invalid submodule reference to git:
>      * if you forgot to run "git submodule update --recursive" after
> pulling remote changes following by a "git commit -a", leading to
> unwilling submodule downgrading.
>      * if you're referencing a new submodule revision... which you
> forgot to push first!
> * To have better code consistency, following a single code style using
> clang-format[3], similarly to what systemd does[4].
>
> I think that all of us already encountered one or several of these
> issues at least once ;-). Having tools checking these errors
> automatically allow me not to worry about it anymore.
> Our documentation contains nowadays many errors simply because Doxygen
> let us do that and we did not look at """inoffensive""" warnings, since
> they are not preventing us from continuing - they are lost in the
> verbosity of build logs.
>
> I am the only one which would like such an option, and if so: how do you
> keep your documentation up-to-date?
>
> Cheers,
>
> Gautier
>
> [1] https://github.com/doxygen/doxygen/pull/412
> [2] https://gist.github.com/bagage/bdca3d4b66d43db7a5e3
> [3] http://clang.llvm.org/docs/ClangFormat.html
> [4] https://github.com/systemd/systemd/blob/master/autogen.sh
>
> ------------------------------------------------------------------------------
> Go from Idea to Many App Stores Faster with Intel(R) XDK
> Give your users amazing mobile app experiences with Intel(R) XDK.
> Use one codebase in this all-in-one HTML5 development environment.
> Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
> http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
> _______________________________________________
> Doxygen-develop mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/doxygen-develop
>



------------------------------------------------------------------------------

_______________________________________________
Doxygen-develop mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-develop
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH] Add TREAT_WARNINGS_AS_ERROR option

Gautier
Hello again,

> On 09 Dec 2015, at 19:33, Albert <[hidden email]> wrote:
>
> Hi Gautier,
>
> Thanks for you responses to my suggestions.
> 1) continuation on errors.
> In principle I think you are right, though the word error has a higher "visibility" than warning. An example where an error is given but the process continues is when the image from the PROJECT_LOGO does not exist. This significantly influences the output.
> So maybe either we should have some more categories:
> - fatal same as current error ans stop generation (will break some builds as some people , I do it myself, search for the word 'error' at the beginning of the sentence
> - error same as current error, but process is continuing
> - warning as it is now
I actually disagree with that point of view; either these are errors which will break the build, either these won't and they should be warnings then. But I would agree with you if "fatal error" were named "exceptions": 3 terms, 3 behaviours. Anyway that's not that important.  
> 2) extra exit code for warnings
> I see you objection that it possibly will break, from the compatibility point of view is probably a less good idea
To me it's fine and I think it should - those who do not check doxygen success can easily fix their build system anyway, while it let other users (=at least me) fix doxygen generation instead.
Should I do another patch for that one?

> 3) Proposed patch does stop at first warning, my idea was more replacing the word "warning" by "error" for higher "visibility".
Yes OK. But would this patch be merged if 2) is done?

> 4) giving warnings and errors a number
> we agree on this
> 5) inspecting the warnings.log file
> I think in any case one uses a build system to build the code and in one way or another the build errors will be reported as well., possibly by an external tool as well.
> Checking the warnings.log file would only be a test whether or not the warnings file is empty or not, displaying the warnings and abort the build process. So I don't see this as a big problem all build systems will support something like this.
Well it depends on your build process, but when you're building various distincts platform (windows / macosx / unix), there are almost no standard tools to manipule files. And again, if doxygen directly tells us if everything is OK, it avoids an unnecessary extra work IMO.

>
> Albert
>
>
>
> On Tue, Dec 8, 2015 at 10:35 AM, Gautier Pelloux-Prayer <[hidden email]> wrote:
> Hi Albert,
>
> Thanks for your detailled opinion. Please see my inlined remarks below.
>
> Gautier
>
>> On 06 Dec 2015, at 12:03, Albert <[hidden email]> wrote:
>>
>> In principle all the errors and warnings doxygen gives should be removed by the engineers.
>>
>> Doxygen distinguish between errors and warnings, where errors possibly corrupt the documentation building or are serious enough, in the eyes of the doxygen developers to stop the generation of the documentation. In case of an error the doxygen developer can also choose to give an error message but to continue anyway.
> Should not it be a warning then? An error should have a consistent behavior during all processing, should it not?
>>
>> When we would have the possibility to promote all the warnings to errors (and we should also stop at all errors that currently don't stop), it would mean that, when using the option, after each error a rerun is necessary. I think this is a bit overdone.
> Well, that's the current behavior of -Werror for compilers. Indeed on first execution you will have a lot of stop&retry, but once it is done, you should not have many errors. And on first execution, you can temporary use -Wno-error to see all errors immediately if needed.
>> I see some possibilities:
>> - in case doxygen discovers warnings it does not finish with exit code 0 but with e.g. exit code 2 (and use exit code 1 for the errors on which it now already stops).
> This solution suits me but if that possibility is adopted it might break many build systems where doxygen is expected to exit successfully in any case. Would it be a problem?
>> - when using the proposed option the message is given as an error, but the process does not stop. I don't see this as an improvement as one can now catch the warnings in a log file and check them.
> I am not sure to understand what do you mean there - proposed patch should exit on first warning?
>> - all warnings get a number and the user can "promote" in the Doxyfile some warnings to, fatal, errors. This would be quite a big effort as all the messages have to be categorized (I've been thinking about this some time ago, but have not started to implement this as it is a lot of work and does not bring enough in my opinion, a quick estimation 700 messages to be checked).
> Well, I agree with you that it would be both an ideal solution and a big effort which does not bring enough ;-).
>>
>> The procedure I follow more or less is: Each time I'm building (overnight builds) the software I catch the warnings and errors in a warnings.log file. When this warnings.log file contains a message (or a new message compared to the last time the build was done) an email is send to the engineer who, last. changed the source file.
> That's the step I want to avoid: having an external script/tool checking doxygen output to see if anything went wrong, while doxygen could tell me directly if I broke something. However this is more or less what I am aiming for.
>>
>>
>> Albert
>>
>> On Thu, Dec 3, 2015 at 9:34 PM, Gautier <[hidden email]> wrote:
>> Hi list;
>>
>> As stated on Github[1], I would like to add an option behaving similarly
>> to compilers' -Werror option: any warning generated during Doxygen
>> execution will abort it immediately.
>>
>> This option is, in my opinion, valuable to keep documentation up-to-date
>> with code changes, specially when multiple people are working altogether.
>> I will not blame anyone to not think all consequence of a code change,
>> but scripts can help him/her from breaking anything:
>>
>> * strict compiler options (-Werror, -Wall, etc.) prevents at least some
>> quick&dirty code and obvious bugs. Compilers will warn beginners about
>> code which will not work (out of bounds errors, etc.), but most of the
>> time it's simply about a typo / useless dead code.
>> * Git hook preventing users from pushing invalid commits [2]. We are
>> intensively using git submodules for instance - it's quite easy to push
>> an invalid submodule reference to git:
>>  * if you forgot to run "git submodule update --recursive" after
>> pulling remote changes following by a "git commit -a", leading to
>> unwilling submodule downgrading.
>>  * if you're referencing a new submodule revision... which you
>> forgot to push first!
>> * To have better code consistency, following a single code style using
>> clang-format[3], similarly to what systemd does[4].
>>
>> I think that all of us already encountered one or several of these
>> issues at least once ;-). Having tools checking these errors
>> automatically allow me not to worry about it anymore.
>> Our documentation contains nowadays many errors simply because Doxygen
>> let us do that and we did not look at """inoffensive""" warnings, since
>> they are not preventing us from continuing - they are lost in the
>> verbosity of build logs.
>>
>> I am the only one which would like such an option, and if so: how do you
>> keep your documentation up-to-date?
>>
>> Cheers,
>>
>> Gautier
>>
>> [1] https://github.com/doxygen/doxygen/pull/412
>> [2] https://gist.github.com/bagage/bdca3d4b66d43db7a5e3
>> [3] http://clang.llvm.org/docs/ClangFormat.html
>> [4] https://github.com/systemd/systemd/blob/master/autogen.sh
>>
>> ------------------------------------------------------------------------------
>> Go from Idea to Many App Stores Faster with Intel(R) XDK
>> Give your users amazing mobile app experiences with Intel(R) XDK.
>> Use one codebase in this all-in-one HTML5 development environment.
>> Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
>> http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
>> _______________________________________________
>> Doxygen-develop mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/doxygen-develop
>>
>
>


------------------------------------------------------------------------------
_______________________________________________
Doxygen-develop mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-develop
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH] Add TREAT_WARNINGS_AS_ERROR option

John Olsson
In reply to this post by Gautier
Hi,

I know I jump into the middle of a heated discussion here, but I feel I must chime in and lend Gautier my support.

What he suggests sounds very reasonable to me. For instance when writing standard make files by hand (yes people still do this and for a number of reasons) it is easier to check for return code of doxygen than to parse a file and do actions depending on the contents of a file...

Also I agree with him that errors are indeed errors and an error should abort just like it does with a C compiler.

Thus, you need to either reclassify those errors that should not result in an aborted build as a warning or retain them as errors and abort the build.

Fatal errors should be very rare, more like internal non recoverable error states...

And yes, a "treat warnings as errors" option is indeed needed.


Now I have said what I wanted to say and will go back to lurking. ;-)


/John

---- Gautier Pelloux-Prayer <[hidden email]> wrote ----

>Hello again,
>
>> On 09 Dec 2015, at 19:33, Albert <[hidden email]> wrote:
>>
>> Hi Gautier,
>>
>> Thanks for you responses to my suggestions.
>> 1) continuation on errors.
>> In principle I think you are right, though the word error has a higher "visibility" than warning. An example where an error is given but the process continues is when the image from the PROJECT_LOGO does not exist. This significantly influences the output.
>> So maybe either we should have some more categories:
>> - fatal same as current error ans stop generation (will break some builds as some people , I do it myself, search for the word 'error' at the beginning of the sentence
>> - error same as current error, but process is continuing
>> - warning as it is now
>I actually disagree with that point of view; either these are errors which will break the build, either these won't and they should be warnings then. But I would agree with you if "fatal error" were named "exceptions": 3 terms, 3 behaviours. Anyway that's not that important.  
>> 2) extra exit code for warnings
>> I see you objection that it possibly will break, from the compatibility point of view is probably a less good idea
>To me it's fine and I think it should - those who do not check doxygen success can easily fix their build system anyway, while it let other users (=at least me) fix doxygen generation instead.
>Should I do another patch for that one?
>
>> 3) Proposed patch does stop at first warning, my idea was more replacing the word "warning" by "error" for higher "visibility".
>Yes OK. But would this patch be merged if 2) is done?
>
>> 4) giving warnings and errors a number
>> we agree on this
>> 5) inspecting the warnings.log file
>> I think in any case one uses a build system to build the code and in one way or another the build errors will be reported as well., possibly by an external tool as well.
>> Checking the warnings.log file would only be a test whether or not the warnings file is empty or not, displaying the warnings and abort the build process. So I don't see this as a big problem all build systems will support something like this.
>Well it depends on your build process, but when you're building various distincts platform (windows / macosx / unix), there are almost no standard tools to manipule files. And again, if doxygen directly tells us if everything is OK, it avoids an unnecessary extra work IMO.
>
>>
>> Albert
>>
>>
>>
>> On Tue, Dec 8, 2015 at 10:35 AM, Gautier Pelloux-Prayer <[hidden email]> wrote:
>> Hi Albert,
>>
>> Thanks for your detailled opinion. Please see my inlined remarks below.
>>
>> Gautier
>>
>>> On 06 Dec 2015, at 12:03, Albert <[hidden email]> wrote:
>>>
>>> In principle all the errors and warnings doxygen gives should be removed by the engineers.
>>>
>>> Doxygen distinguish between errors and warnings, where errors possibly corrupt the documentation building or are serious enough, in the eyes of the doxygen developers to stop the generation of the documentation. In case of an error the doxygen developer can also choose to give an error message but to continue anyway.
>> Should not it be a warning then? An error should have a consistent behavior during all processing, should it not?
>>>
>>> When we would have the possibility to promote all the warnings to errors (and we should also stop at all errors that currently don't stop), it would mean that, when using the option, after each error a rerun is necessary. I think this is a bit overdone.
>> Well, that's the current behavior of -Werror for compilers. Indeed on first execution you will have a lot of stop&retry, but once it is done, you should not have many errors. And on first execution, you can temporary use -Wno-error to see all errors immediately if needed.
>>> I see some possibilities:
>>> - in case doxygen discovers warnings it does not finish with exit code 0 but with e.g. exit code 2 (and use exit code 1 for the errors on which it now already stops).
>> This solution suits me but if that possibility is adopted it might break many build systems where doxygen is expected to exit successfully in any case. Would it be a problem?
>>> - when using the proposed option the message is given as an error, but the process does not stop. I don't see this as an improvement as one can now catch the warnings in a log file and check them.
>> I am not sure to understand what do you mean there - proposed patch should exit on first warning?
>>> - all warnings get a number and the user can "promote" in the Doxyfile some warnings to, fatal, errors. This would be quite a big effort as all the messages have to be categorized (I've been thinking about this some time ago, but have not started to implement this as it is a lot of work and does not bring enough in my opinion, a quick estimation 700 messages to be checked).
>> Well, I agree with you that it would be both an ideal solution and a big effort which does not bring enough ;-).
>>>
>>> The procedure I follow more or less is: Each time I'm building (overnight builds) the software I catch the warnings and errors in a warnings.log file. When this warnings.log file contains a message (or a new message compared to the last time the build was done) an email is send to the engineer who, last. changed the source file.
>> That's the step I want to avoid: having an external script/tool checking doxygen output to see if anything went wrong, while doxygen could tell me directly if I broke something. However this is more or less what I am aiming for.
>>>
>>>
>>> Albert
>>>
>>> On Thu, Dec 3, 2015 at 9:34 PM, Gautier <[hidden email]> wrote:
>>> Hi list;
>>>
>>> As stated on Github[1], I would like to add an option behaving similarly
>>> to compilers' -Werror option: any warning generated during Doxygen
>>> execution will abort it immediately.
>>>
>>> This option is, in my opinion, valuable to keep documentation up-to-date
>>> with code changes, specially when multiple people are working altogether.
>>> I will not blame anyone to not think all consequence of a code change,
>>> but scripts can help him/her from breaking anything:
>>>
>>> * strict compiler options (-Werror, -Wall, etc.) prevents at least some
>>> quick&dirty code and obvious bugs. Compilers will warn beginners about
>>> code which will not work (out of bounds errors, etc.), but most of the
>>> time it's simply about a typo / useless dead code.
>>> * Git hook preventing users from pushing invalid commits [2]. We are
>>> intensively using git submodules for instance - it's quite easy to push
>>> an invalid submodule reference to git:
>>>  * if you forgot to run "git submodule update --recursive" after
>>> pulling remote changes following by a "git commit -a", leading to
>>> unwilling submodule downgrading.
>>>  * if you're referencing a new submodule revision... which you
>>> forgot to push first!
>>> * To have better code consistency, following a single code style using
>>> clang-format[3], similarly to what systemd does[4].
>>>
>>> I think that all of us already encountered one or several of these
>>> issues at least once ;-). Having tools checking these errors
>>> automatically allow me not to worry about it anymore.
>>> Our documentation contains nowadays many errors simply because Doxygen
>>> let us do that and we did not look at """inoffensive""" warnings, since
>>> they are not preventing us from continuing - they are lost in the
>>> verbosity of build logs.
>>>
>>> I am the only one which would like such an option, and if so: how do you
>>> keep your documentation up-to-date?
>>>
>>> Cheers,
>>>
>>> Gautier
>>>
>>> [1] https://github.com/doxygen/doxygen/pull/412
>>> [2] https://gist.github.com/bagage/bdca3d4b66d43db7a5e3
>>> [3] http://clang.llvm.org/docs/ClangFormat.html
>>> [4] https://github.com/systemd/systemd/blob/master/autogen.sh
>>>
>>> ------------------------------------------------------------------------------
>>> Go from Idea to Many App Stores Faster with Intel(R) XDK
>>> Give your users amazing mobile app experiences with Intel(R) XDK.
>>> Use one codebase in this all-in-one HTML5 development environment.
>>> Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
>>> http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
>>> _______________________________________________
>>> Doxygen-develop mailing list
>>> [hidden email]
>>> https://lists.sourceforge.net/lists/listinfo/doxygen-develop
>>>
>>
>>
>
>
>------------------------------------------------------------------------------
>_______________________________________________
>Doxygen-develop mailing list
>[hidden email]
>https://lists.sourceforge.net/lists/listinfo/doxygen-develop
------------------------------------------------------------------------------
_______________________________________________
Doxygen-develop mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-develop
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH] Add TREAT_WARNINGS_AS_ERROR option

Negreanu Marius
In reply to this post by Gautier
On Thu, Dec 3, 2015 at 10:34 PM, Gautier <[hidden email]> wrote:

> Hi list;
>
> As stated on Github[1], I would like to add an option behaving similarly
> to compilers' -Werror option: any warning generated during Doxygen
> execution will abort it immediately.
>
> This option is, in my opinion, valuable to keep documentation up-to-date
> with code changes, specially when multiple people are working altogether.
> I will not blame anyone to not think all consequence of a code change,
> but scripts can help him/her from breaking anything:
>
> * strict compiler options (-Werror, -Wall, etc.) prevents at least some
> quick&dirty code and obvious bugs. Compilers will warn beginners about
> code which will not work (out of bounds errors, etc.), but most of the
> time it's simply about a typo / useless dead code.
> * Git hook preventing users from pushing invalid commits [2]. We are
> intensively using git submodules for instance - it's quite easy to push
> an invalid submodule reference to git:
>      * if you forgot to run "git submodule update --recursive" after
> pulling remote changes following by a "git commit -a", leading to
> unwilling submodule downgrading.
>      * if you're referencing a new submodule revision... which you
> forgot to push first!
> * To have better code consistency, following a single code style using
> clang-format[3], similarly to what systemd does[4].

+1

This also helps in case the INPUT directory is invalid.
Right now you get:
    warning: source SOME_PATH is not a readable file or directory... skipping.

For a single project, it's easy to spot the invalid INPUT, but for
large/er projects
you're back to grep-in for "warning:"

------------------------------------------------------------------------------
_______________________________________________
Doxygen-develop mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-develop
Loading...