Brief description
-----------------
Clang-based standalone tool that diagnoses the following cases of defining
functions:
- completely unused functions declared as `extern`;
- functions declared as `extern` which are used only locally and thus can be
made `static`.
Example
-------
Input:
```c
static void firstStatic(void);
static void secondStatic(void);
void firstExtern(void);
extern void secondExtern(void);
static void firstStatic(void) { }
static void secondStatic(void) { }
void firstExtern(void) { }
void secondExtern(void) { }
int
main(void)
{
firstExtern();
secondStatic();
return 0;
}
```
Run command:
```sh
bin/unused-funcs main.c --
```
Output (paths are truncated):
```
.../main.c:20:firstExtern:can be made static
.../main.c:25:secondExtern:unused
```
Building
--------
1. Clone the repository to `llvm/tools/clang/tools/extra`.
2. Add `add_subdirectory(unused-funcs)` to `CMakeLists.txt` in the same
directory.
3. Run `ninja unused-funcs` inside your LLVM's `build/` directory.
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"
Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/unused-funcs
Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/unused-funcs
You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a
pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master