Re: Help: static code anaylis

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Let's split this in two.

First, gcc supports /lots/ of warning options:

<https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html>

(The links I'm giving are to the current gcc version - you can find the right page for your particular gcc version on the same site.)

Some of these will be relevant to you, some not. For example, if the code is for running on a small embedded system, you might want "-Wdouble-promotion" enabled (I use that one in most of my projects). If you are targetting a PC, it will be irrelevant.

If you are writing portable code, -Wpedantic could be useful (in combination with an appropriate -std option). If the code will always compile with gcc, it's less helpful.

-Wall and -Wextra give a reasonable starting point for many people, and then you fine-tune other options on or off to get the best you can for your own code.



Secondly, the compiler can do more extensive static analysis if it has formed a better view of the code. With no optimisation, -O0, the compiler runs quickly and has little tracking of ranges, inter-procedural data, constant propagation, etc. With -O2, it does a good deal of this work - and the same information gathered for optimisation can be used for more comprehensive warnings.


Once you get code that builds into a running program, you should also look at run-time analysis - especially the "sanitize" options:

<https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html>

mvh.,

David




On 14/05/2020 10:36, Kunal Chauhan wrote:
what exactly you mean by below lines
"
should pick more based on the code in question - read through the list
in the gcc manual), make sure you enable optimisation of at least -O1,
preferably -O2.  The compiler will then do more analysis, and can give
more useful warnings.  "

On Thu, May 14, 2020 at 2:37 AM David Brown <david.brown@xxxxxxxxxxxx <mailto:david.brown@xxxxxxxxxxxx>> wrote:

    On 13/05/2020 19:51, Kunal Chauhan via Gcc-help wrote:
     > I have am not able to compile my binary,
     > Will still can i do some static ayalysis ?

    You can certainly get /some/ useful results even without generating a
    finished binary.  You need to be able to compile the files you want to
    check, however.

    As well as using warnings (-Wall -Wextra is a reasonable start, but you
    should pick more based on the code in question - read through the list
    in the gcc manual), make sure you enable optimisation of at least -O1,
    preferably -O2.  The compiler will then do more analysis, and can give
    more useful warnings.

    If you can't get enough from gcc, you can also try clang's tools - they
    can be better in some ways.  (I hope that is not considered
    blasphemy on
    this list!)  Beyond that, there are a variety of tools available - but
    they are mostly very niche, very expensive, or very outdated.


     >
     > On 13 May 2020 11:18 p.m., "Jonathan Wakely"
    <jwakely.gcc@xxxxxxxxx <mailto:jwakely.gcc@xxxxxxxxx>> wrote:
     >
     > On Wed, 13 May 2020 at 17:57, Kunal Chauhan via Gcc-help
     > <gcc-help@xxxxxxxxxxx <mailto:gcc-help@xxxxxxxxxxx>> wrote:
     >>
     >> Hi team
     >>
     >> I want my source file of c to be checked for code violations and
    null
     > check
     >> etc.
     >
     > Make sure you're compiling with warnings turned on.
     >
     >> As from logs crash is coming.
     >
     > As Dan K. said, you'll probably get more reliable results from
    dynamic
     > instrumentation. Try using -fsanitize=undefined and/or
     > -fsanitize=address. Try using valgrind (not at the same time as
     > -fsantiize=address).
     >



--
/*Thanks with Regards!*/
/*
/*
*/
Kunal Chauhan*/
/*Mob:09813614826*/
/*Mob:08860397903*/
/*E-mail:atkunalchauhan@xxxxxxxxx <mailto:E-mail%3Aatkunalchauhan@xxxxxxxxx>*
/




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux