Commit Graph

1373 Commits

Author SHA1 Message Date
Andrew Eisenberg
025a1a1383 Add new command to open the query history directory
Allows users to explore the contents and all artifacts of the query
that was just run.
2022-03-03 07:57:56 -08:00
Andrew Eisenberg
f28c1f91d9 Ensure structured logging file exists before running a query 2022-03-03 07:57:23 -08:00
Andrew Eisenberg
2579d12f24 Save log files to the query history directory
This commit deprecates the the cutsom log directory option by saving
all log files with query history.

There is a simplification of the `OutputChannelLogger` since it no
longer needs to manage deleting log files on exit.

Also, the `codeQL.runningQueries.customLogDirectory` is marked as
deprecated. If this value is being used, a warning message is popped
up after the query completes.
2022-03-02 12:21:15 -08:00
Andrew Eisenberg
c18f7953e7 Merge pull request #1111 from github/aeisenberg/graph-viewer
More work on the graph viewer
2022-03-02 07:52:49 -08:00
Andrew Eisenberg
3a292b02b6 Simplify walkDirectory
The check for `seenFiles` is not necessary since we do not need to
handle symbolic links.
2022-03-01 14:02:21 -08:00
Andrew Eisenberg
7baf2d0a2a Small formatting changes for graphes 2022-03-01 11:50:55 -08:00
Andrew Eisenberg
328289eb1c Ensure graph view loads when result is clicked
Without these changes, a race condition was sometimes hit when viewing
a graph. There are two, related issues that are fixed. These problems
did not appear in the past since rendering a normal results view is
much faster and the message handler is always already set up by the
time the interface first sends a message over to the web view.

1. `vscode.postMessage({ t: 'resultViewLoaded' });` was being called
   before the component is completely mounted. Ie- `componentDidMount`
   is not called. So, the interface is notified that the web view is
   ready to receive messages _before_ it is actually ready to receive
   messages.

   The change ensures the interface only sends messages when the web
   view is ready.

2. `this._panelLoaded` is never set to false if the panel is unloaded.
   This means that if a panel is re-opened, the interface assumes that
   the view is nearly _immediately_ ready to receive messages.

   The change ensures that the interface waits for the webview to really
   be loaded before sending messages.

In both of these cases, if the interface sends the `setState` message
too early, then the message is ignored since no handlers have been added
to the web view.
2022-03-01 11:46:26 -08:00
Andrew Eisenberg
95d93eeb61 Merge pull request #1176 from github/bump-cli
Bump CLI version in integration tests
2022-03-01 08:15:05 -08:00
Charis Kyriakou
b54cc27cab Update ECMAScript version to be the same across the codebase (#1177) 2022-03-01 16:01:29 +00:00
shati-patel
c9ca1ee7b3 Bump CLI version in integration tests 2022-03-01 12:14:30 +01:00
Charis Kyriakou
649d6d94a3 Expose Remote Query language (#1173) 2022-02-28 13:12:01 +00:00
Charis Kyriakou
bf68d21830 Some UI fixes for collapsible items (#1172) 2022-02-28 10:53:02 +00:00
Andrew Eisenberg
64b33b76cb Update node version in CI 2022-02-26 19:48:55 -08:00
Andrew Eisenberg
c189df3fd6 Ensure Graph results can only be seen if in canary mode 2022-02-25 18:04:21 -08:00
Andrew Eisenberg
277869ebca Ensure graph queries with ids that have slashes work
Do this by actually walking the interpretation directory.

Move the directory walker from tests to prod and make it async. Also
add tests for it.

And add a warning on graph views to let users know that it is not
production quality.

Finally, change the interpreted directory to be `graphResults` instead
of `interpretedResults.sarif`.
2022-02-25 18:03:14 -08:00
shati-patel
303513a566 Make icon part of clickable link
Plus fix the associated styling/CSS
2022-02-25 21:08:16 +00:00
shati-patel
8712106b3d Add link to workflow run logs from results view 2022-02-25 21:08:16 +00:00
Andrew Eisenberg
cdb9506583 Merge branch 'main' into aeisenberg/graph-viewer 2022-02-25 10:38:19 -08:00
Andrew Eisenberg
94a311a550 Merge pull request #1166 from github/aeisenberg/remote-queries-unit-tests
Add unit tests for query history and remote queries
2022-02-25 10:07:56 -08:00
Andrew Eisenberg
791e7e9c4d Small cleanups around remote-queries tests
- More explicit test helper module names
- Fix unit test names
- Better sanitization of repo names in tests
2022-02-25 09:57:15 -08:00
Angela P Wen
6cfa7e2cd3 Integrate evaluator structured logging per query server instance (#1151)
Adds structured evaluator logging on a per-query instance to CLI v 2.8.2+. The newline-delimited JSON logs are emitted to `structured-evaluator-log.json` in the directory with other query artifacts, but not consumed by the extension.

Co-authored-by: Andrew Eisenberg <aeisenberg@github.com>
2022-02-25 09:22:56 -08:00
Andrew Eisenberg
7196c26181 Merge pull request #1168 from github/aeisenberg/query-history-version
Preemptively add a version number to the query history json file
2022-02-25 08:11:14 -08:00
Charis Kyriakou
735f177283 Use webview CSP source for style-src (#1170) 2022-02-25 16:03:58 +00:00
Andrew Eisenberg
f857e5ec6c Ensure all tests are run
Co-authored-by: Charis Kyriakou <charisk@users.noreply.github.com>
2022-02-25 08:00:03 -08:00
Charis Kyriakou
a5e02950c2 Fixed unique key warning (#1169) 2022-02-25 10:58:24 +00:00
Andrew Eisenberg
4a928f1298 Add unit tests for query history and remote queries
Adds some tests for reading in the history and manipulating.
There are some more tests to come later. Maybe in another PR, maybe in
this one.

Note that this PR uses a new node 16 API String.prototype.replaceAll.
I think this is ok since vscode ships with node 16. If this causes
problems, I can separate to a different PR and we can discuss there.
2022-02-24 23:09:55 -08:00
Andrew Eisenberg
f59012862e Preemptively add a version number to the query history json file
Since we are now storing query history on disk, we will need to handle
situations where versions change. For now, there is only version 1. In
the future, we may need to make breaking changes to this format and we
need the flexibility to detect and possibly handle different versions.

In this case, users don't often downgrade their vscode versions, so
most likely, we only need to be forward compatible. Ie- we need to
handle moving from v1 to v2, but not the other way around.
2022-02-24 11:42:46 -08:00
Andrew Eisenberg
5f5418a297 Merge pull request #1164 from github/aeisenberg/avoid-download
Avoid downloading a result if it already exists
2022-02-24 08:11:02 -08:00
Andrew Eisenberg
548a216b56 Avoid downloading a result if it already exists
This commit adds a check if a results artifact already exists before
trying to download it again.

This is not a complete solution since the page icon will still have a
download button even if the artifact already exists. In this case,
clicking on it will avoid downloading it a second time.

The next step is to read in the downloaded artifacts and display them
appropriately.
2022-02-23 11:16:39 -08:00
Andrew Eisenberg
c943c89fc6 Merge pull request #1163 from github/aeisenberg/remote-multi-analyses
Allow multiple analyses for same repo to be downloaded
2022-02-23 11:13:37 -08:00
Andrew Eisenberg
06de6077ba Merge pull request #1162 from github/aeisenberg/remote-query-restart
Remember remote queries across restarts
2022-02-23 11:13:17 -08:00
Andrew Eisenberg
cef1fcc95d Merge pull request #1155 from github/aeisenberg/remote-query-save
Add remote query items to history view
2022-02-23 11:13:00 -08:00
Andrew Eisenberg
1ed8b225db Small cleanup and comment 2022-02-23 09:52:46 -08:00
Andrew Eisenberg
f0354c87f4 Allow multiple analyses for same repo to be downloaded
Removes the limitation specified in #1089 where analyses for the same
repo and different queries will overwrite each other.
2022-02-22 14:16:54 -08:00
Andrew Eisenberg
5e06a615cd Remember remote queries across restarts
Remote query items will be stored in query history and will remain
available across restarts.

When the extension is restarted, any `InProgress` remote queries will
be monitored until they complete.

When clicked on, a remote query is opened and its results can be
downloaded. The query text and the query file can be opened from the
history menu. A remote query can be deleted as well, which will purge
all results from global storage.

Limitations:

1. Labels are not editable
2. Running multiple queries that each run on the same repository
   will have conflicting results and there will be errors when trying
   to view the results of the second query. This limitation is not new,
   but it is easier to hit now. See #1089.

Both of these limitations will be addressed in future PRs.
2022-02-22 11:42:52 -08:00
Andrew Eisenberg
e11aa7af18 Merge branch 'main' into aeisenberg/remote-query-save 2022-02-22 10:13:16 -08:00
Andrew Eisenberg
f4ddc17851 Merge pull request #1158 from github/aeisenberg/open-query-logger
Open query server logger for query errors
2022-02-22 09:55:19 -08:00
Andrew Eisenberg
ebce2826cb Merge pull request #1143 from github/aeisenberg/refactor-query-history-info
Refactor query history to handle remote and local
2022-02-22 09:51:13 -08:00
Andrew Eisenberg
4c411acef4 Merge branch 'main' into aeisenberg/open-query-logger 2022-02-22 09:44:41 -08:00
Andrew Eisenberg
ddc941f464 Merge pull request #1157 from github/aeisenerg/empty-additional-packs
Ensure `--addtional-packs` arg not used for empty workspace
2022-02-22 09:44:10 -08:00
shati-patel
c5ff2c6f76 Fix styling for light mode 2022-02-22 17:14:15 +00:00
shati-patel
85ac16bb22 Change shape of result index 2022-02-22 17:14:15 +00:00
shati-patel
e7ee4a33c7 Add new component for displaying analysis failures 2022-02-22 17:14:15 +00:00
shati-patel
ac0da04542 Read analysis failures from index file 2022-02-22 17:14:15 +00:00
shati-patel
3337117970 Use more accurate primer icon 2022-02-22 12:04:21 +00:00
Charis Kyriakou
9b61ff5714 Use Primer octicons where possible (#1156) 2022-02-21 11:28:13 +00:00
Andrew Eisenberg
d25db48452 Open query server logger for query errors
Because errors when running queries tend to have better explanations
in the query server log instead of the extension log, by default open
the query server log for query errors.
2022-02-18 12:55:32 -08:00
Andrew Eisenberg
251f354076 Ensure --addtional-packs arg not used for empty workspace 2022-02-18 10:16:42 -08:00
Andrew Eisenberg
9c6ae226fb Merge branch 'aeisenberg/refactor-query-history-info' into aeisenberg/remote-query-save 2022-02-17 14:11:44 -08:00
Andrew Eisenberg
a502ee85d1 Fix unit test and add comments/todos 2022-02-17 13:07:10 -08:00