Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Caught set but unused parameters with clang

Tags:

c++

c

clang

Is there a way I could catch set but unused variables using clang, something similar to gcc's Werror=unused-but-set-parameter? I set -Wunused but clang doesn't catch set but unused parameters.

like image 535
nevanom Avatar asked Nov 10 '22 05:11

nevanom


2 Answers

I am not sure if you have tried more than what you have listed, but here is more information on CLANG unused options, using its GCC compatibility:

First, here is what the documentation suggests:

-Wextra  -Wunused-but-set-parameter  

The following is background reference information:

From HERE:

If you are using the LLVM-GCC or Apple LLVM Compiler build option there are a large number of possible compiler warnings that you can enable/disable. The Clang front end also supports the GCC diagnostic warnings (see http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html) for backwards compatibility.

Following the referenced link in that quote lists several unused options from the GCC family of warnings:

-Wall
This enables all the warnings about constructions that some users consider questionable, and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. This also enables some language-specific warnings described in C++ Dialect Options and Objective-C and Objective-C++ Dialect Options.

    -Wall turns on the following warning flags:   
(there are many more, just listing 'unused')

              ...  

              -Wunused-function  
              -Wunused-label     
              -Wunused-value     
              -Wunused-variable  
              ... 

And finally, just below the last block:

-Wextra
    This enables some extra warning flags that are not enabled by -Wall.   
    (This option used to be called -W. The older name is still supported, but the newer name is more descriptive.)  
(again, there are more, just listing _unused variety)  

              -Wunused-parameter (only with -Wunused or -Wall) 
              -Wunused-but-set-parameter (only with -Wunused or -Wall)  
like image 109
ryyker Avatar answered Nov 14 '22 21:11

ryyker


There is an equivalent warning generated by clang-tidy, integrated from clang-analyzer:

note: Value stored to 'tmp' is never read
warning: Value stored to 'tmp' is never read [clang-analyzer-deadcode.DeadStores]

It looks like LLVM chose to implement some of the GCC warnings as separate tools.

like image 24
asdragnea Avatar answered Nov 14 '22 22:11

asdragnea