xaizek / unused-funcs (License: GPLv2+) (since 2018-12-07)
Clang-based standalone tool that detects unused external functions in a set of source files.
File Mode Size
src/ 040000
tests/ 040000
CMakeLists.txt 100644 353B
LICENSE 100644 18KiB
README.md 100644 1,034B

/README.md

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:

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:

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.
Hints

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