mirror of
https://github.com/github/codeql.git
synced 2026-04-25 08:45:14 +02:00
Ruby: Make similar changes to differentiate extraction errors and warnings, and mostly restore original behaviour.
This commit is contained in:
@@ -31,3 +31,5 @@ query predicate multipleToString(AstNode n, string s) {
|
||||
}
|
||||
|
||||
query predicate extractionError(ExtractionError error) { any() }
|
||||
|
||||
query predicate extractionWarning(ExtractionWarning error) { any() }
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
private import codeql.Locations
|
||||
private import codeql.util.FileSystem
|
||||
private import codeql.ruby.Diagnostics
|
||||
|
||||
private module Input implements InputSig {
|
||||
abstract class ContainerBase extends @container {
|
||||
@@ -34,3 +35,20 @@ class File extends Container, Impl::File {
|
||||
/** Holds if this file was extracted from ordinary source code. */
|
||||
predicate fromSource() { any() }
|
||||
}
|
||||
|
||||
/**
|
||||
* A successfully extracted file, that is, a file that was extracted and
|
||||
* contains no extraction errors or warnings.
|
||||
*/
|
||||
class SuccessfullyExtractedFile extends File {
|
||||
SuccessfullyExtractedFile() {
|
||||
not exists(Diagnostic d |
|
||||
d.getLocation().getFile() = this and
|
||||
(
|
||||
d instanceof ExtractionError
|
||||
or
|
||||
d instanceof ExtractionWarning
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,14 +2,15 @@
|
||||
* @id rb/summary/number-of-files-extracted-with-errors
|
||||
* @name Total number of Ruby files that were extracted with errors
|
||||
* @description The total number of Ruby code files that we extracted, but where
|
||||
* at least one extraction error occurred in the process.
|
||||
* at least one extraction error (or warning) occurred in the process.
|
||||
* @kind metric
|
||||
* @tags summary
|
||||
*/
|
||||
|
||||
import codeql.ruby.AST
|
||||
import codeql.ruby.Diagnostics
|
||||
import codeql.files.FileSystem
|
||||
|
||||
select count(File f |
|
||||
exists(ExtractionError e | e.getLocation().getFile() = f) and exists(f.getRelativePath())
|
||||
exists(f.getRelativePath()) and
|
||||
not f instanceof SuccessfullyExtractedFile
|
||||
)
|
||||
|
||||
@@ -2,14 +2,12 @@
|
||||
* @id rb/summary/number-of-successfully-extracted-files
|
||||
* @name Total number of Ruby files that were extracted without error
|
||||
* @description The total number of Ruby code files that we extracted without
|
||||
* encountering any extraction errors
|
||||
* encountering any extraction errors (or warnings).
|
||||
* @kind metric
|
||||
* @tags summary
|
||||
*/
|
||||
|
||||
import codeql.ruby.AST
|
||||
import codeql.ruby.Diagnostics
|
||||
import codeql.files.FileSystem
|
||||
|
||||
select count(File f |
|
||||
not exists(ExtractionError e | e.getLocation().getFile() = f) and exists(f.getRelativePath())
|
||||
)
|
||||
select count(SuccessfullyExtractedFile f | exists(f.getRelativePath()))
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
extractionError
|
||||
extractionWarning
|
||||
| src/not_ruby.rb:5:25:5:26 | A parse error occurred. Check the syntax of the file. If the file is invalid, correct the error or exclude the file from analysis. |
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
| src/not_ruby.rb:5:25:5:26 | A parse error occurred. Check the syntax of the file. If the file is invalid, correct the error or exclude the file from analysis. | Extraction failed in src/not_ruby.rb with error A parse error occurred. Check the syntax of the file. If the file is invalid, correct the error or exclude the file from analysis. | 2 |
|
||||
|
||||
Reference in New Issue
Block a user