{"action":"created","issue":{"url":"https://api.github.com/repos/arduino/Arduino/issues/4184","repository_url":"https://api.github.com/repos/arduino/Arduino","labels_url":"https://api.github.com/repos/arduino/Arduino/issues/4184/labels{/name}","comments_url":"https://api.github.com/repos/arduino/Arduino/issues/4184/comments","events_url":"https://api.github.com/repos/arduino/Arduino/issues/4184/events","html_url":"https://github.com/arduino/Arduino/issues/4184","id":117700172,"node_id":"MDU6SXNzdWUxMTc3MDAxNzI=","number":4184,"title":"Enable All Warnings (-Wall -Wextra) by default","user":{"login":"nuket","id":1294207,"node_id":"MDQ6VXNlcjEyOTQyMDc=","avatar_url":"https://avatars2.githubusercontent.com/u/1294207?v=4","gravatar_id":"","url":"https://api.github.com/users/nuket","html_url":"https://github.com/nuket","followers_url":"https://api.github.com/users/nuket/followers","following_url":"https://api.github.com/users/nuket/following{/other_user}","gists_url":"https://api.github.com/users/nuket/gists{/gist_id}","starred_url":"https://api.github.com/users/nuket/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nuket/subscriptions","organizations_url":"https://api.github.com/users/nuket/orgs","repos_url":"https://api.github.com/users/nuket/repos","events_url":"https://api.github.com/users/nuket/events{/privacy}","received_events_url":"https://api.github.com/users/nuket/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"matthijskooijman","id":194491,"node_id":"MDQ6VXNlcjE5NDQ5MQ==","avatar_url":"https://avatars3.githubusercontent.com/u/194491?v=4","gravatar_id":"","url":"https://api.github.com/users/matthijskooijman","html_url":"https://github.com/matthijskooijman","followers_url":"https://api.github.com/users/matthijskooijman/followers","following_url":"https://api.github.com/users/matthijskooijman/following{/other_user}","gists_url":"https://api.github.com/users/matthijskooijman/gists{/gist_id}","starred_url":"https://api.github.com/users/matthijskooijman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matthijskooijman/subscriptions","organizations_url":"https://api.github.com/users/matthijskooijman/orgs","repos_url":"https://api.github.com/users/matthijskooijman/repos","events_url":"https://api.github.com/users/matthijskooijman/events{/privacy}","received_events_url":"https://api.github.com/users/matthijskooijman/received_events","type":"User","site_admin":false},"assignees":[{"login":"matthijskooijman","id":194491,"node_id":"MDQ6VXNlcjE5NDQ5MQ==","avatar_url":"https://avatars3.githubusercontent.com/u/194491?v=4","gravatar_id":"","url":"https://api.github.com/users/matthijskooijman","html_url":"https://github.com/matthijskooijman","followers_url":"https://api.github.com/users/matthijskooijman/followers","following_url":"https://api.github.com/users/matthijskooijman/following{/other_user}","gists_url":"https://api.github.com/users/matthijskooijman/gists{/gist_id}","starred_url":"https://api.github.com/users/matthijskooijman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matthijskooijman/subscriptions","organizations_url":"https://api.github.com/users/matthijskooijman/orgs","repos_url":"https://api.github.com/users/matthijskooijman/repos","events_url":"https://api.github.com/users/matthijskooijman/events{/privacy}","received_events_url":"https://api.github.com/users/matthijskooijman/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/arduino/Arduino/milestones/16","html_url":"https://github.com/arduino/Arduino/milestone/16","labels_url":"https://api.github.com/repos/arduino/Arduino/milestones/16/labels","id":1393105,"node_id":"MDk6TWlsZXN0b25lMTM5MzEwNQ==","number":16,"title":"Release 1.6.7","description":"","creator":{"login":"ffissore","id":510465,"node_id":"MDQ6VXNlcjUxMDQ2NQ==","avatar_url":"https://avatars2.githubusercontent.com/u/510465?v=4","gravatar_id":"","url":"https://api.github.com/users/ffissore","html_url":"https://github.com/ffissore","followers_url":"https://api.github.com/users/ffissore/followers","following_url":"https://api.github.com/users/ffissore/following{/other_user}","gists_url":"https://api.github.com/users/ffissore/gists{/gist_id}","starred_url":"https://api.github.com/users/ffissore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ffissore/subscriptions","organizations_url":"https://api.github.com/users/ffissore/orgs","repos_url":"https://api.github.com/users/ffissore/repos","events_url":"https://api.github.com/users/ffissore/events{/privacy}","received_events_url":"https://api.github.com/users/ffissore/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":210,"state":"closed","created_at":"2015-11-04T07:40:00Z","updated_at":"2017-07-06T13:14:45Z","due_on":null,"closed_at":"2015-12-23T16:18:06Z"},"comments":17,"created_at":"2015-11-18T22:48:26Z","updated_at":"2018-10-21T12:54:03Z","closed_at":null,"author_association":"NONE","body":"After getting bitten by a subtle printf format-specifier / varargs bug (#4174), spending all day hunting it down, and only then learning that the Arduino IDE suppresses any warnings at all from being emitted by the compiler, I would like to request that compiler warnings be enabled by default (potentially on a per-sketch basis, but globally is better) in the Arduino IDE. \n\nNot doing so totally goes against [the principle of least astonishment](https://en.wikipedia.org/wiki/Principle_of_least_astonishment), which was exactly what I was when I found out that the default `compiler_flags` was set to `-w`. \n\nKeeping warnings from reaching the user means novices stay novices, and it frustrates the advanced users who expect such things to be active by default.\n\nThere are even some libraries where I have seen warnings generated, and I can't help but think that the original library writers would have done a better job at cleaning those up before releasing them. Obscuring the fact that there are warnings in libraries means that the library writers themselves may not realize something is wrong, in particular if they are using the Arduino IDE to do this original work. This is, overall, a bad thing for the ecosystem. Advanced users will have a hard time taking it seriously, when instead of owning the errors, the IDE sweeps them under the rug.\n"},"comment":{"url":"https://api.github.com/repos/arduino/Arduino/issues/comments/431666347","html_url":"https://github.com/arduino/Arduino/issues/4184#issuecomment-431666347","issue_url":"https://api.github.com/repos/arduino/Arduino/issues/4184","id":431666347,"node_id":"MDEyOklzc3VlQ29tbWVudDQzMTY2NjM0Nw==","user":{"login":"cousteaulecommandant","id":6584870,"node_id":"MDQ6VXNlcjY1ODQ4NzA=","avatar_url":"https://avatars1.githubusercontent.com/u/6584870?v=4","gravatar_id":"","url":"https://api.github.com/users/cousteaulecommandant","html_url":"https://github.com/cousteaulecommandant","followers_url":"https://api.github.com/users/cousteaulecommandant/followers","following_url":"https://api.github.com/users/cousteaulecommandant/following{/other_user}","gists_url":"https://api.github.com/users/cousteaulecommandant/gists{/gist_id}","starred_url":"https://api.github.com/users/cousteaulecommandant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cousteaulecommandant/subscriptions","organizations_url":"https://api.github.com/users/cousteaulecommandant/orgs","repos_url":"https://api.github.com/users/cousteaulecommandant/repos","events_url":"https://api.github.com/users/cousteaulecommandant/events{/privacy}","received_events_url":"https://api.github.com/users/cousteaulecommandant/received_events","type":"User","site_admin":false},"created_at":"2018-10-21T12:54:03Z","updated_at":"2018-10-21T12:54:03Z","author_association":"CONTRIBUTOR","body":"For an even simpler approach re: the GUI, I'd just add an *Include warnings from core/library components* checkbox rather than a dropdown menu with 3 options, unless it is really considered necessary to hide core warnings to library developers.\r\nAlternatively, just make a series of predefined \"profiles\", such as \"novice\", \"learning\", \"developer\", \"don't bother me\", \"something is wrong and I have no idea why, please help\", etc., each with its own set of flags for each of the three parts.  (Whether or not we rely on the compiler's choices is a matter of taste.  For example, I would add `-Wshadow` to the list.)  This would limit the users BUT simplify the GUI for those who don't care about such a high level of configurability and just want an easy to use thing.\r\n\r\nSince some users may not be OK with such a limited subset, there could be an \"Advanced...\" button or \"Custom\" option that opens a dialog where the user can enter their own flags manually (either by typing them or by selecting them from a list), for each of the three parts.  I think this would be the best approach, since it provides high customization without interfering with the GUI simplicity.\r\n\r\nFinally, I would like to suggest doing some sort of processing of the warning types (as indicated by the `[-Wtype-of-warning]` in the message), highlighting them in different colors depending on their importance (orange, yellow, white, gray), and possibly adding some aids such as in-editor highlighting and a tooltip explaining what the warning usually means."}}
{"actor":{"display_login":"cousteaulecommandant"}}