Commit Graph

22 Commits

Author SHA1 Message Date
Eike Ziller
39613b3b08 Adapt to changes to run mode
Change-Id: I9e299d6fa49920ffa98ececb5b96e9512055ba34
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-30 14:58:51 +03:00
Nikolai Kosjar
3529df2e6e Fix license header
Change-Id: I017092613cdec7c00736442c10ca80b3c74f0189
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2015-06-26 10:24:06 +03:00
Eike Ziller
d5956e92ed Merge remote-tracking branch 'origin/3.4'
Conflicts:
	plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp

Change-Id: I0362a5bb2a44c2608c2c074df45fffa022446cc4
2015-05-07 14:40:11 +02:00
Christian Kandeler
59e01e2a89 Unit tests: Explicitly check for success from runner.
We will otherwise miss runner failures for any file that does not
contribute to the diagnostics count.
Note: The tool can also fail during the building stage, but in this case
we will get notified by the signal spy timing out.

Change-Id: Ia9aa797d658b1752e3da6e08a652ee55868955ba
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-05-05 11:42:45 +03:00
Nikolai Kosjar
fce0b85106 Reduce calls to SessionManager:startupProject()
Might fix race conditions.

Change-Id: I70f7f28c88afe328468332898919b69fc432098b
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2015-04-27 15:31:27 +03:00
Christian Kandeler
10acf6af84 Create a dummy run configuration to create our run control from.
The Clang Static Analyzer differs from other analyzers in that it does
not run a binary produced by the build process, but looks at source
files instead. It is therefore completely unrelated to any run
configurations that may or may not exist for the project. This has been
ignored so far, with these two main consequences:
    - When running the analyzer, the name of some random run
      configuration appears in the application output pane, which makes
      it look to the user as if the corresponding executable has been
      run, which it has not.
    - For projects without run configurations (e.g. libraries),
      analyzing does not work out of the box, which makes no sense
      conceptually.
So we now create our own run special run configuration (not visible in
the UI) and run it directly via runRunConfiguration() instead of using
the currently active run configuration via runProject().
This fixes both issues listed above.

Change-Id: Icc839816f4a1e6f02a0eb2328c536b44f7304807
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-03-09 16:55:53 +02:00
Christian Kandeler
26abab90ca Show the status message also while running.
So users can see how many issues were found before the analyzer has
finished, as well as browse them.

Change-Id: I82452441168ecb370e7b2aac137961ebb5b8bfc3
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-03-09 14:04:59 +02:00
Christian Kandeler
6e796591f4 Allow users to suppress diagnostics.
This patch deals with what is likely the most common use case:
Filtering specific messages at a particular location. The current
granularity is essentially per-file (and per-function, where possible),
which seems more useful than taking line numbers into
account, as that would not be robust with regards to code changes elsewhere
in the file. We can fine-tune this if the need arises.

Change-Id: I4e9b2671fa199339cc3b995953d072b840cd3205
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-02-27 11:39:32 +02:00
Nikolai Kosjar
a13818f5cd Clear status message on start
Change-Id: I82e94f0426796473b35dd2a534a4fd7c5aab2667
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2015-02-27 11:29:46 +02:00
Christian Kandeler
7c9c7b297a Don't fade out analyzer summary.
There is no reason why the status of the analyzer run should disappear
after a few seconds.

Change-Id: I16c21f05a03ac31f489312fbe56373a531ecc5d5
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-02-26 16:16:06 +02:00
André Pönitz
6ac1dc95fd Adjust to Analyzer core changes
Change-Id: I2985b1be505f9aa43f2a8615a8dfcafaeb991e21
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-02-20 11:35:49 +02:00
André Pönitz
93685b97ef Compile fix after recent Analyzer core changes
Change-Id: I100e75c526ff8609849526c3317a6d0a1658176b
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-02-19 10:14:28 +02:00
Eike Ziller
a8dfba176b Merge remote-tracking branch 'origin/3.3'
Conflicts:
	plugins/clangstaticanalyzer/ClangStaticAnalyzer.json.in

Change-Id: Iffa578b015c51375cdb2d9930830cb2d76433bc7
2015-02-13 09:37:39 +01:00
Christian Kandeler
2946364ce6 Add unit tests.
These test the complete workflow as the user experiences it when
clicking "Start".
Intended usage:
    (1) Run sdktool to set up a kit with the toolchain you want
        to test against (using a temporary directory).
        The tests assume exactly one Kit to be present.
    (2) Start Creator with a matching settings path and
        "-load ClangStaticAnalyzer -test ClangStaticAnalyzer".
    (3) Repeat until all toolchains have been tested.
The initial implementation tests one trivial source file
with both qbs and qmake.

Change-Id: I810f23e2990a789a4dd9f1dd16335fbcf5c5f39f
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-02-09 16:48:26 +02:00
Eike Ziller
c98db856f9 Update License
Change-Id: I0a127e78046369f7b55b3ace7b08a13a3f5319e5
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-01-15 18:46:29 +02:00
Nikolai Kosjar
30b77eb032 DiagnosticView: Add copy action to context menu
Task-number: QCE-22
Change-Id: I22a71bd99689e4eaece3b2595b28e0d434a52453
Reviewed-by: Riitta-Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2014-11-25 12:41:45 +02:00
Nikolai Kosjar
802a7d653c Tool: Use "No" button in mode check dialog
...instead of "Cancel".

Task-number: QCE-20
Change-Id: Ibef52dc17cb3aee73e1f42eb1c64e4f9d5a9f990
Reviewed-by: Robert Loehning <robert.loehning@theqtcompany.com>
2014-11-24 17:23:23 +02:00
Nikolai Kosjar
b6a50a1a4c Use updated ProjectInfo
...that actually make us use the ProjectInfo with updated
CompilerCallData.

Change-Id: Ieee298b3db64159f3faa02231921275e4466bcb5
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2014-11-07 12:40:56 +02:00
Nikolai Kosjar
2f3666a3f0 Ensure that project configuration did not change
Otherwise we might try to analyze invalid or vanished files.

Change-Id: I387dfb127618f2db21a538b07e1c152dbd026ca6
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2014-11-07 12:01:44 +02:00
Nikolai Kosjar
aa98ee2755 Tool: Warn on run in Release mode
Change-Id: I3443ccc8daf37a1b10b43df3736fcf24c7ae2fea
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2014-10-31 16:58:42 +02:00
Nikolai Kosjar
d61117e814 Tool: Clear model already before building the project
Change-Id: I507056c9a5ee950bd95541a9e3042e9af23c0731
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2014-10-31 11:41:08 +02:00
Nikolai Kosjar
b9f9eb7ae5 Import Clang Static Analyzer plugin
This plugin adds "Clang Static Analyzer" to the Analyze mode, which
processes all implementation/source project files of the current
project. For this, it will call the clang executable for each file.

The found diagnostics will be displayed in a view similar to the one
used in "Valgrind Memory Analyzer".

The user can specify the clang executable to use and the number of
concurrent processes to launch in Menu: Tools > Options > Analyzer >
Clang Static Analyzer.

Main TODOs:

 * Fiddle around the appropriate command line options, currently only
   defines and include paths are passed on.

 * Tests on Windows / OS X.

 * Remove dependency to clangcodemodel by moving the functions that
   create command line arguments to CppTools. Mostly they are not even
   specific to clang (but would also work with gcc).

 * Maybe limit to a range of tested clang versions.

 * How to deal with directory containing all the log files after the
   user starts a new run or Creator is shut down? (delete it? leave it
   there? make it configurable?).

 * Find out how to properly integrate the tests.

Imaginable future additions:

 * Adding a button to load result/log files from a directory, e.g. if
   the user used the 'scan-build' approach.

 * Adding a button with a filter menu in order to display only
   diagnostics from certain categories, similar to "Valgrind Memory
   Analyzer".

Change-Id: I6aeb5dfdbdfa239a06c03dd8759a983df71b77ea
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2014-10-16 13:36:09 +03:00