General

I suggest you ...

You've used all your votes and won't be able to post a new idea, but you can still search and comment on existing ideas.

There are two ways to get more votes:

  • When an admin closes an idea you've voted on, you'll get your votes back from that idea.
  • You can remove your votes from an open idea you support.
  • To see ideas you have already voted on, select the "My feedback" filter and select "My open ideas".
(thinking…)

Enter your idea and we'll search to see if someone has already suggested it.

If a similar idea already exists, you can support and comment on it.

If it doesn't exist, you can post your idea so others can support it.

Enter your idea and we'll search to see if someone has already suggested it.

  1. Allow Lint to see that constructor takes ownership of memory.

    Lint sees that ownership of allocated memory is taken by a constructor if the owning object isn't "new'd". But if the owning object is "new'd", then Lint does not understand this. See the example below, which works in the online demo.

    This was discussed in this thread, as well as several others:
    http://www.gimpel.com/Discussion.cfm?ThreadID=808

    //lint -e438, -e529, -e1502, -e1712, -e1788, -e714
    #include <memory>

    struct A { A(char *){}; };
    void g( )
    {
    // This results in a 429 warning.
    char * ptr1 = (char *) malloc(10);
    A *a1 = new A(ptr1);

    // This does not result in a 429 warning. …

    16 votes
    Vote
    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      You have left! (?) (thinking…)
      planned  ·  0 comments  ·  Admin →
    • Out Of Bounds Checking at Start Of Array

      This is 'out-of-bounds' is detected:

      unsigned char buffer[5];
      unsigned char* buffer_ptr = &buffer[4];

      ++buffer_ptr; // ERROR! now points to 1 byte after &buffer[4]
      *buffer_ptr = 0x12; // assign to memory outside of buffer[]

      This 'out-of-bounds' is NOT detected:

      unsigned char buffer[5];
      unsigned char* buffer_ptr = &buffer[0];

      --buffer_ptr; // ERROR! now points to 1 byte before &buffer[0]
      *buffer_ptr = 0x12; // assign to memory outside of buffer[]

      As 'buffer_ptr' has been 'bound' to 'buffer' via the assignment I would have expected PC-lint to have detected this.

      4 votes
      Vote
      Sign in
      Check!
      (thinking…)
      Reset
      or sign in with
      • facebook
      • google
        Password icon
        I agree to the terms of service
        Signed in as (Sign out)
        You have left! (?) (thinking…)
        planned  ·  0 comments  ·  Admin →
      • Use a fixed release cycle

        Customers could plan better, if they knew you have 2 or 4 releases per year.
        Right now it´s totally unpredictable.

        4 votes
        Vote
        Sign in
        Check!
        (thinking…)
        Reset
        or sign in with
        • facebook
        • google
          Password icon
          I agree to the terms of service
          Signed in as (Sign out)
          You have left! (?) (thinking…)
          planned  ·  0 comments  ·  Admin →
        • Display all options currently in effect (What Options am I using here)

          Although "-vo" and "lint usual arguments ?" are useful, they produce a lot of information, including information that sometimes could be considered 'what was noise' such as temporary error suppressions "-save, -e123, -restore"

          It would be great if you could add a feature where I could display all options, suppressions, flags, etc. in effect at a specific point in a source file that have been:
          a) changed from the defaults, or
          b) changed since the last "-save"
          c) changed in this file

          for example:
          //lint -save
          //lint -e123
          //lint -esym(456, FooBar)
          ...
          /*lint -save -e789 */ MACRO /*lint -restore */ …

          4 votes
          Vote
          Sign in
          Check!
          (thinking…)
          Reset
          or sign in with
          • facebook
          • google
            Password icon
            I agree to the terms of service
            Signed in as (Sign out)
            You have left! (?) (thinking…)
            planned  ·  0 comments  ·  Admin →
          • Add appended messages to the save/restore concept

            We are linting our complete software with different rulesets for its different SW-parts (because some are safety relevant and some are not, i.e. the rulesets differ, but the code analysis must check the software as a whole).

            Each SW-part's rulesets has its own active rules/errors + specific messages for the errors, which are added via the "-append()" option.
            In the course of action we use the save/restore options to get back to a basic common, global configuration.

            I.e. the complete command line is something like:
            # lint-nt.exe
            # <output file>
            # <global base cfg>
            # <msg output format cfg>.lnt
            #…

            3 votes
            Vote
            Sign in
            Check!
            (thinking…)
            Reset
            or sign in with
            • facebook
            • google
              Password icon
              I agree to the terms of service
              Signed in as (Sign out)
              You have left! (?) (thinking…)
              planned  ·  0 comments  ·  Admin →
            • Improved MISRA checking for projects with mixed C/C++ source code

              According to chapter 5.7 of the manual, PC-LINT determines the language from the file extension.
              Therefore, one could assume that in a mixed C/C++ project one would get MISRA C messages in C modules and MISRA C++ messages in C++ modules respectively.
              In reality this is not working, even if you use the –indirect option to help PC-LINT:

              common.h/* included in all modules to select MISRA standard based on language*/
              #ifdef __cplusplus
              /*lint –indirect(au-misra-cpp.lnt)*/
              #else
              /*lint –indirect(au-misra3.lnt)*/
              #endif

              Depending on the order of the modules processed, you end up with MISRA C messages in C++ modules and vice versa.
              PC-LINT…

              3 votes
              Vote
              Sign in
              Check!
              (thinking…)
              Reset
              or sign in with
              • facebook
              • google
                Password icon
                I agree to the terms of service
                Signed in as (Sign out)
                You have left! (?) (thinking…)
                planned  ·  0 comments  ·  Admin →
              • Don't see your idea?

              General

              Feedback and Knowledge Base