{"id":13730943,"url":"https://github.com/Barro/compiler-warnings","last_synced_at":"2025-05-08T03:32:27.652Z","repository":{"id":32605451,"uuid":"36190173","full_name":"Barro/compiler-warnings","owner":"Barro","description":"A list of compiler warning flags for different GCC and clang versions","archived":false,"fork":false,"pushed_at":"2020-01-04T09:36:34.000Z","size":250,"stargazers_count":229,"open_issues_count":4,"forks_count":21,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-08-04T02:09:53.362Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"clifff/cssmin","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Barro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-24T19:54:28.000Z","updated_at":"2024-06-14T08:49:42.000Z","dependencies_parsed_at":"2022-07-12T14:22:23.746Z","dependency_job_id":null,"html_url":"https://github.com/Barro/compiler-warnings","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Barro%2Fcompiler-warnings","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Barro%2Fcompiler-warnings/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Barro%2Fcompiler-warnings/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Barro%2Fcompiler-warnings/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Barro","download_url":"https://codeload.github.com/Barro/compiler-warnings/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224695857,"owners_count":17354495,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T02:01:21.784Z","updated_at":"2024-11-14T21:31:58.226Z","avatar_url":"https://github.com/Barro.png","language":"Python","readme":"# C/C++/Objective-C compiler warning flags collection and parsers\n\nThis project includes tools and lists to figure out all warning flags\nthat [clang compiler](http://clang.llvm.org/) and\n[GNU Compiler Collection](https://gcc.gnu.org/) have for C family\nlanguages (C, C++, and Objective-C). This also shows all aliases and\nwarning flags that a certain flag enables (prefixed with \"#\"\ncharacter) so that you can easily see which flag is enabled by\nwhat. There are also warning flags that do nothing for compatibility\nor deprecation reasons. They are suffixed with \"# DUMMY switch\" text.\n\nThe purpose of these collections is to make it more easy to use the\nstatic code analysis tools that compilers provide.\n\n## Clang warning flags\n\nClang includes `-Weverything` flag, that is not shown in these lists,\nthat enables all warnings. Clang documentation provides\n[reference for some of the diagnostic flags in Clang](https://clang.llvm.org/docs/DiagnosticsReference.html).\n\n* clang 8 [all](clang/warnings-clang-8.txt)\n  • [top level](clang/warnings-clang-top-level-8.txt)\n  • [unique](clang/warnings-clang-unique-8.txt)\n  • [diff](clang/warnings-clang-diff-7-8.txt)\n* clang 7 [all](clang/warnings-clang-7.txt)\n  • [top level](clang/warnings-clang-top-level-7.txt)\n  • [unique](clang/warnings-clang-unique-7.txt)\n  • [diff](clang/warnings-clang-diff-6-7.txt)\n* clang 6 [all](clang/warnings-clang-6.txt)\n  • [top level](clang/warnings-clang-top-level-6.txt)\n  • [unique](clang/warnings-clang-unique-6.txt)\n  • [diff](clang/warnings-clang-diff-5-6.txt)\n* clang 5 [all](clang/warnings-clang-5.txt)\n  • [top level](clang/warnings-clang-top-level-5.txt)\n  • [unique](clang/warnings-clang-unique-5.txt)\n  • [diff](clang/warnings-clang-diff-4-5.txt)\n* clang 4 [all](clang/warnings-clang-4.txt)\n  • [top level](clang/warnings-clang-top-level-4.txt)\n  • [unique](clang/warnings-clang-unique-4.txt)\n  • [diff](clang/warnings-clang-diff-3.9-4.txt)\n* clang 3.9 [all](clang/warnings-clang-3.9.txt)\n  • [top level](clang/warnings-clang-top-level-3.9.txt)\n  • [unique](clang/warnings-clang-unique-3.9.txt)\n  • [diff](clang/warnings-clang-diff-3.8-3.9.txt)\n* clang 3.8 [all](clang/warnings-clang-3.8.txt)\n  • [top level](clang/warnings-clang-top-level-3.8.txt)\n  • [unique](clang/warnings-clang-unique-3.8.txt)\n  • [diff](clang/warnings-clang-diff-3.7-3.8.txt)\n* clang 3.7 [all](clang/warnings-clang-3.7.txt)\n  • [top level](clang/warnings-clang-top-level-3.7.txt)\n  • [unique](clang/warnings-clang-unique-3.7.txt)\n  • [diff](clang/warnings-clang-diff-3.6-3.7.txt)\n* clang 3.6 [all](clang/warnings-clang-3.6.txt)\n  • [top level](clang/warnings-clang-top-level-3.6.txt)\n  • [unique](clang/warnings-clang-unique-3.6.txt)\n  • [diff](clang/warnings-clang-diff-3.5-3.6.txt)\n* clang 3.5 [all](clang/warnings-clang-3.5.txt)\n  • [top level](clang/warnings-clang-top-level-3.5.txt)\n  • [unique](clang/warnings-clang-unique-3.5.txt)\n  • [diff](clang/warnings-clang-diff-3.4-3.5.txt)\n* clang 3.4 [all](clang/warnings-clang-3.4.txt)\n  • [top level](clang/warnings-clang-top-level-3.4.txt)\n  • [unique](clang/warnings-clang-unique-3.4.txt)\n  • [diff](clang/warnings-clang-diff-3.3-3.4.txt)\n* clang 3.3 [all](clang/warnings-clang-3.3.txt)\n  • [top level](clang/warnings-clang-top-level-3.3.txt)\n  • [unique](clang/warnings-clang-unique-3.3.txt)\n  • [diff](clang/warnings-clang-diff-3.2-3.3.txt)\n* clang 3.2 [all](clang/warnings-clang-3.2.txt)\n  • [top level](clang/warnings-clang-top-level-3.2.txt)\n  • [unique](clang/warnings-clang-unique-3.2.txt)\n\n## GCC warning flags\n\nIf you need a full list of\n[GCC warning options](https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html),\nfor a specific version of GCC that you have, you can run GCC with `gcc\n--help=warnings` to get that list. Otherwise some plain GCC warning\noptions lists are available below:\n\n* GCC 8 [all](gcc/warnings-gcc-8.txt)\n  • [top level](gcc/warnings-gcc-top-level-8.txt)\n  • [unique](gcc/warnings-gcc-unique-8.txt)\n  • [diff](gcc/warnings-gcc-diff-7-8.txt)\n* GCC 7 [all](gcc/warnings-gcc-7.txt)\n  • [top level](gcc/warnings-gcc-top-level-7.txt)\n  • [unique](gcc/warnings-gcc-unique-7.txt)\n  • [diff](gcc/warnings-gcc-diff-6-7.txt)\n* GCC 6 [all](gcc/warnings-gcc-6.txt)\n  • [top level](gcc/warnings-gcc-top-level-6.txt)\n  • [unique](gcc/warnings-gcc-unique-6.txt)\n  • [diff](gcc/warnings-gcc-diff-5-6.txt)\n* GCC 5 [all](gcc/warnings-gcc-5.txt)\n  • [top level](gcc/warnings-gcc-top-level-5.txt)\n  • [unique](gcc/warnings-gcc-unique-5.txt)\n  • [diff](gcc/warnings-gcc-diff-4.9-5.txt)\n* GCC 4.9 [all](gcc/warnings-gcc-4.9.txt)\n  • [top level](gcc/warnings-gcc-top-level-4.9.txt)\n  • [unique](gcc/warnings-gcc-unique-4.9.txt)\n  • [diff](gcc/warnings-gcc-diff-4.8-4.9.txt)\n* GCC 4.8 [all](gcc/warnings-gcc-4.8.txt)\n  • [top level](gcc/warnings-gcc-top-level-4.8.txt)\n  • [unique](gcc/warnings-gcc-unique-4.8.txt)\n  • [diff](gcc/warnings-gcc-diff-4.7-4.8.txt)\n* GCC 4.7 [all](gcc/warnings-gcc-4.7.txt)\n  • [top level](gcc/warnings-gcc-top-level-4.7.txt)\n  • [unique](gcc/warnings-gcc-unique-4.7.txt)\n  • [diff](gcc/warnings-gcc-diff-4.6-4.7.txt)\n* GCC 4.6 [all](gcc/warnings-gcc-4.6.txt)\n  • [top level](gcc/warnings-gcc-top-level-4.6.txt)\n  • [unique](gcc/warnings-gcc-unique-4.6.txt)\n  • [diff](gcc/warnings-gcc-diff-4.5-4.6.txt)\n* GCC 4.5 [all](gcc/warnings-gcc-4.5.txt)\n  • [top level](gcc/warnings-gcc-top-level-4.5.txt)\n  • [unique](gcc/warnings-gcc-unique-4.5.txt)\n  • [diff](gcc/warnings-gcc-diff-4.4-4.5.txt)\n* GCC 4.4 [all](gcc/warnings-gcc-4.4.txt)\n  • [top level](gcc/warnings-gcc-top-level-4.4.txt)\n  • [unique](gcc/warnings-gcc-unique-4.4.txt)\n  • [diff](gcc/warnings-gcc-diff-4.3-4.4.txt)\n* GCC 4.3 [all](gcc/warnings-gcc-4.3.txt)\n  • [top level](gcc/warnings-gcc-top-level-4.3.txt)\n  • [unique](gcc/warnings-gcc-unique-4.3.txt)\n  • [diff](gcc/warnings-gcc-diff-4.2-4.3.txt)\n* GCC 4.2 [all](gcc/warnings-gcc-4.2.txt)\n  • [top level](gcc/warnings-gcc-top-level-4.2.txt)\n  • [unique](gcc/warnings-gcc-unique-4.2.txt)\n  • [diff](gcc/warnings-gcc-diff-4.1-4.2.txt)\n* GCC 4.1 [all](gcc/warnings-gcc-4.1.txt)\n  • [top level](gcc/warnings-gcc-top-level-4.1.txt)\n  • [unique](gcc/warnings-gcc-unique-4.1.txt)\n  • [diff](gcc/warnings-gcc-diff-4.0-4.1.txt)\n* GCC 4.0 [all](gcc/warnings-gcc-4.0.txt)\n  • [top level](gcc/warnings-gcc-top-level-4.0.txt)\n  • [unique](gcc/warnings-gcc-unique-4.0.txt)\n  • [diff](gcc/warnings-gcc-diff-3.4-4.0.txt)\n* GCC 3.4 [all](gcc/warnings-gcc-3.4.txt)\n  • [top level](gcc/warnings-gcc-top-level-3.4.txt)\n  • [unique](gcc/warnings-gcc-unique-3.4.txt)\n  (first GCC with domain specific language options file)\n\n## Examining differences\n\nOne use case for these kinds of lists is to see what differences there\nare between different compilers and compiler versions. I have made\navailable rudimentary compiler flag differences between two consequent\ncompiler versions as diff-files, but for more specific differences you\nneed to use some (visual) diff program, as shown below:\n\n![Some GCC 5 and 6 -Wall differences shown with meld](gcc/meld-gcc-5-6-wall.png)\n\n# Development [![Build Status](https://travis-ci.org/Barro/compiler-warnings.svg?branch=master)](https://travis-ci.org/Barro/compiler-warnings)\n\nThis uses [ANTLR](http://www.antlr.org/) as a parser generator with\nsome supporting Python code to parse warning flags from actual\ncompiler option data files. Other requirements are following (plus\ntheir dependencies):\n\n* [Ninja](https://ninja-build.org/)\n* [ANTLR4](http://www.antlr.org/)\n* [Python 3.5 or newer](https://www.python.org/)\n* [antlr4-python3-runtime](https://pypi.python.org/pypi/antlr4-python3-runtime/)\n\n## Building\n\nAfter you have installed all the requirements and are able to run\nANTLR with `antlr4` command, just use following commands in `parsers/`\ndirectory to generate these lists yourself:\n\n    ninja\n    ./parse-clang-diagnostic-groups.py \u003cpath-to-clang-source\u003e/include/clang/Basic/DiagnosticGroups.td\n    ./parse-gcc-warning-options.py \u003cpath-to-gcc-source\u003e/gcc/{common.opt,c-family/c.opt}\n\nAnd you'll get the list of all individual warning flags and their\ndependencies that are in the requested compiler version.\n\nTo generate filtered lists, you may use `--top-level` and `--unique`\nswitches.\n\n* `--top-level` switch does not include warnings that are enabled by\n  some other switch in the list.\n* `--unique` lists all warnings without any information what other\n  warnings they enable. Diffs on this page are created from these\n  files.\n\n## Tests\n\nThere are some unit tests testing the low level functionality. You may\nrun time with `ninja test` command in `parsers/` directory to verify\nthat unit tests pass.\n\n## Processing git repositories\n\nWhen parser gets a change that affects formatting or other output for\nmultiple files these warning lists need to be recreated. There are\n`process-clang-git.sh` and `process-gcc-git.sh` scripts that take the\ngit repository root as their first parameter and apply all different\nvariants of these commands to create final text files.\n","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBarro%2Fcompiler-warnings","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBarro%2Fcompiler-warnings","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBarro%2Fcompiler-warnings/lists"}