HP UX Web Development Tools manual Generating PDB diffs with multiple PDBs

Page 40

Example 43 Generating a consolidated cadvise report from multiple PDBs

$ cadvise report -pdb 1.pdb:2.pdb:3.pdb:4.pdb -all

Report generated using "HP Code Advisor C.XX.XX [Release Date]" on <Machine Name> at <Time> Report command line: "Report Command Line"

=============================== DETAILED REPORT ================================

------------------------------- SEVERITY LEVEL 8 -------------------------------

"/home/rajen/cadvise/testing/1.c", line 5: warning #2549-D: variable "p" is used before its value is set y = *p = 1;

^

"/home/rajen/cadvise/testing/4.c", line 5: warning #2549-D: variable "c" is used before its value is set a = b = c;

^

------------------------------- SEVERITY LEVEL 5 -------------------------------

"/home/rajen/cadvise/testing/2.c", line 4: warning #2223-D: function "scanf" declared implicitly scanf("%d",&a);

^

"/home/rajen/cadvise/testing/3.c", line 7: warning #2223-D: function "printf" declared implicitly printf("%d\n", y);

^

"/home/rajen/cadvise/testing/1.c", line 5, procedure main: warning #20200-D: Potential null pointer dereference through p is detected (null definition:/home/rajen/cadvise/testing/1.c, line 2)

6.19 Generating PDB diffs with multiple PDBs

Just as using multiple PDBs to get a consolidated report, PDB diff can also support multiple PDBs. A sample command for PDB diff with multiple PDBs will be as follows:

$ cadvise report -pdb pdb1:pdb2:pdb3:... -basepdb

basepdb1:basepdb2:basepdb3:...

6.20 Recommended process for analyzing the diagnostic messages

The recommended process for analyzing the diagnostic messages is as mentioned below:

1.See a summary report using cadvise report. This gives an overview of the diagnostic messages that have been generated for the application.

2.Analyze all high severity ( >= 7) diagnostic messages generated by cadvise. These diagnostic messages have a very low false positive rate and are likely to point out defects in the application.

3.Each distinct type of diagnostic message generated by the code advisor has a number associated with it. From the summary, identify particular diagnostic messages that are of importance to the application, and then generate a detailed report only for those diagnostic messages. This allows you to focus on a few selected diagnostic messages.

4.Individual developers can analyze the diagnostic messages generated for a particular portion of the code by filtering the report for a particular set of files. This can be done using

-file_summary and -file options.

6.21 Report options interoperability

Filtering options such as -diag, -exclude, -include, and -severitycan be used with one another to generate a report filtered on the criterion.

NOTE: These filtering options are ignored when used with -all, -summary, and

-file_summaryoptions. However, the -alland -severityoptions can be used together to create a detailed report of diagnostics with severity above the specified severity level.

The following examples shows the usage of multiple options simultaneously.

40 Generating reports

Image 40
Contents HP Code Advisor C.02.20 User Guide Page Contents Contents Document conventions and symbols About this documentIntended audience Related informationHP encourages your comments Cadvise-help@lists.hp.comFeatures Cadvise user interface FeaturesIntroduction Cadvise user interfaceAdvanced static code analysis $ cadvise cc -c hello.cSupported compilers $ cadvise -pdb ./mypdb +wlint aCC hello.cppUsing Cadvise Steps in using cadviseSupported platforms Installing Cadvise Getting startedInvoking Cadvise Using Cadvise as a wrapper around Compiler or Linker For information on PDB, see Using the Program Database PDBSee the following makefile content Integrating Cadvise with the makefiles and build processGenerating code complexity metrics Enabling different categories of diagnostic messagesExample 2 Sample wrapper script Example 3 Generating code complexity metrics Objfile.metricsGenerating code complexity metrics Example 4 Code complexity metrics $ cat /tmp/example.c+wcodeguide=rules-library Source structure in the rules library Example 5 Writing a rule to enforce naming conventionUsing the Program Database PDB PDB options table Specifying the PDB locationDeleting PDB Disabling locks in PDB operationsCreating a PDB snapshot at a specified location Displaying PDB versionExample 8 Removing object file information from the PDB Example 9 Creating a PDB snapshotUsage Using cross-file analysisCross-file analysis options Crossfile=auto Example 15 Specifying the location of object files Configuring diagnostic messages Diagnostic configuration options tableSuppressing warnings selectively Enabling warnings selectivelyDisabling warnings in a macro Interpreting selective warnings as errorsManaging warnings in a source file Generating reports Report generation options tableCadvise report report-options -pdb pdbdir Cadvise report report-options logfileGenerating summary reports Generating file summary reportGenerating detailed report $cadvise report -summary -pdb testpdb -noheaderTo save reports, run the following command Generating Html reportExample 23 Generating detailed report $ cadvise report -pdb testpdb -allPrinting diagnostics with specific diagnostic numbers Following example shows the command to generate XML reportGenerating XML report Example 24 Generating an XML reportSuppressing diagnostics for specific files Generating reports based on severity$ cadvise report -pdb testpdb -diag Example 26 Generating reports based on severityReporting diagnostics from specific files Reporting program complexity metrics$ cadvise report -pdb test.pdb -summary -exclude inflate.c $ cadvise report -pdb test.pdb -summary -include inflate.cExample 29 Reporting program complexity metrics Generating report for a module$ cadvise report -pdb gzip.pdb +metrics -include inflate.c Modifying the default severity level of a diagnostic Suppressing report headerGenerating PDB comparison report $ cadvise report -pdb test.pdb -summary -module test1Example 34 Generating detailed diff report with the header $ cadvise report -pdb tmp.pdb -basepdb tmp1.pdb -allExample 35 Generating diff report for any particular warning $ cadvise report -pdb tmp.pdb -basepdb tmp1.pdb -diag$ cadvise report -pdb tmp.pdb -basepdb tmp1.pdb -severity $ cadvise -pdb pdb1 cc one.c two.cReport options file $ cadvise report -pdb new.pdb -basepdb old.pdb -allExample 42 Generating a report using -migration option Generate report for migration related warningsGenerating consolidated report from multiple PDBs Example 41 Report options fileRecommended process for analyzing the diagnostic messages Generating PDB diffs with multiple PDBsReport options interoperability $ cadvise report -pdb 1.pdb2.pdb3.pdb4.pdb -allExample 44 Reporting options interoperability $ cadvise report -pdb test.pdb -diag 2549 -exclude b.cExample 45 Ignoring the -includeoption $ cadvise report -pdb test.pdb -summary -include a.cb.cExample 48 Using -noabort Miscellaneous driver optionsHelp-h-H Example 47 Displaying the list of cadvise optionsExample 49 Using -nobuild option Following command creates the file cadvdir/foo.cadExample 51 Using -tee option Following example shows the usage of -nobuildoptionExample 52 Using +opts filename option Line generates the following messagesCategories of diagnostics table Categories of diagnostics with examplesDetecting generic programming errors Categories of diagnostics with examples Example 53 Null pointer dereference check Such cases, cadvise generates the following warningExample 54 Potential memory leak check Such cases, cadvise generates the following warningsExample 55 Out of bound access Example 56 Out of scope accessExample 57 Use of pointer after free Such cases, cadvise generates the following errorExample 58 Allocator/deallocator mismatch Detecting 32-bit to 64-bit migraton issues Detecting endianness migration issuesExample 60 Detecting 32-bit to 64-bit migraton issues Example 59 Signed bit field of lengthExample 61 Detecting endian dependent code fragments Detecting potential security vulnerabilitiesConsider the following code fragment Detecting multi-threaded programming issues This case, cadvise generates the following errorRunning cadvise generates the following error Example 63 Detecting multi-threaded programming issuesDetecting potential performance improvement opportunities Detecting potential performance improvement opportunities Fixing the warnings by source change Incompatibilities on PA-RISC based systems AC++ standard conformance and compatibility changesSymbols Index