mirror of
https://github.com/github/codeql.git
synced 2026-04-29 18:55:14 +02:00
JS: Implement new metric queries for line counting
This commit is contained in:
10
javascript/ql/src/Diagnostics/Files.ql
Normal file
10
javascript/ql/src/Diagnostics/Files.ql
Normal file
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @name Total source files
|
||||
* @description The total number of source files.
|
||||
* @kind metric
|
||||
* @id js/metrics/files
|
||||
*/
|
||||
|
||||
import javascript
|
||||
|
||||
select count(File f | not f.getATopLevel().isExterns())
|
||||
10
javascript/ql/src/Diagnostics/Lines.ql
Normal file
10
javascript/ql/src/Diagnostics/Lines.ql
Normal file
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @name Total lines of text
|
||||
* @description The total number of lines of text across all source files.
|
||||
* @kind metric
|
||||
* @id js/metrics/lines
|
||||
*/
|
||||
|
||||
import javascript
|
||||
|
||||
select sum(File f | not f.getATopLevel().isExterns() | f.getNumberOfLines())
|
||||
10
javascript/ql/src/Diagnostics/LinesOfCode.ql
Normal file
10
javascript/ql/src/Diagnostics/LinesOfCode.ql
Normal file
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @name Total lines of code
|
||||
* @description The total number of lines of code across all source files.
|
||||
* @kind metric
|
||||
* @id js/metrics/lines-of-code
|
||||
*/
|
||||
|
||||
import javascript
|
||||
|
||||
select sum(File f | not f.getATopLevel().isExterns() | f.getNumberOfLinesOfCode())
|
||||
12
javascript/ql/src/Diagnostics/LinesOfCodePerFile.ql
Normal file
12
javascript/ql/src/Diagnostics/LinesOfCodePerFile.ql
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* @name Lines of code per source file
|
||||
* @description The number of lines of code for each source file.
|
||||
* @kind metric
|
||||
* @id js/metrics/lines-of-code-per-file
|
||||
*/
|
||||
|
||||
import javascript
|
||||
|
||||
from File f
|
||||
where not f.getATopLevel().isExterns()
|
||||
select f, f.getNumberOfLinesOfCode()
|
||||
12
javascript/ql/src/Diagnostics/LinesPerFile.ql
Normal file
12
javascript/ql/src/Diagnostics/LinesPerFile.ql
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* @name Lines of text per source file
|
||||
* @description The number of lines of text for each source file.
|
||||
* @kind metric
|
||||
* @id js/metrics/lines-per-file
|
||||
*/
|
||||
|
||||
import javascript
|
||||
|
||||
from File f
|
||||
where not f.getATopLevel().isExterns()
|
||||
select f, f.getNumberOfLines()
|
||||
@@ -0,0 +1 @@
|
||||
| 22 |
|
||||
1
javascript/ql/test/query-tests/Diagnostics/Lines.qlref
Normal file
1
javascript/ql/test/query-tests/Diagnostics/Lines.qlref
Normal file
@@ -0,0 +1 @@
|
||||
Diagnostics/Lines.ql
|
||||
@@ -0,0 +1 @@
|
||||
| 12 |
|
||||
@@ -0,0 +1 @@
|
||||
Diagnostics/LinesOfCode.ql
|
||||
@@ -0,0 +1,4 @@
|
||||
| src/.eslintrc.yml:0:0:0:0 | src/.eslintrc.yml | 0 |
|
||||
| src/javascript_file.js:0:0:0:0 | src/javascript_file.js | 6 |
|
||||
| src/package.json:0:0:0:0 | src/package.json | 0 |
|
||||
| src/typescript_file.ts:0:0:0:0 | src/typescript_file.ts | 6 |
|
||||
@@ -0,0 +1 @@
|
||||
Diagnostics/LinesOfCodePerFile.ql
|
||||
@@ -0,0 +1,4 @@
|
||||
| src/.eslintrc.yml:0:0:0:0 | src/.eslintrc.yml | 2 |
|
||||
| src/javascript_file.js:0:0:0:0 | src/javascript_file.js | 7 |
|
||||
| src/package.json:0:0:0:0 | src/package.json | 6 |
|
||||
| src/typescript_file.ts:0:0:0:0 | src/typescript_file.ts | 7 |
|
||||
@@ -0,0 +1 @@
|
||||
Diagnostics/LinesPerFile.ql
|
||||
@@ -0,0 +1,2 @@
|
||||
rules:
|
||||
semi: error
|
||||
@@ -0,0 +1,8 @@
|
||||
/**
|
||||
* @externs
|
||||
*/
|
||||
|
||||
// Should not be counted
|
||||
|
||||
function Object() {}
|
||||
function String() {}
|
||||
@@ -0,0 +1,7 @@
|
||||
function foo(x) {
|
||||
return x;
|
||||
}
|
||||
|
||||
function bar(y) {
|
||||
return y;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
"typescript": "*"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
export interface Foo {
|
||||
x: number;
|
||||
}
|
||||
|
||||
export function getX(f: Foo) {
|
||||
return f.x;
|
||||
}
|
||||
Reference in New Issue
Block a user