Adjust framework coverage jobs to cover C#

This commit is contained in:
Tamas Vajk
2021-06-24 15:09:23 +02:00
parent b7a43dccd3
commit 016e8fb2cf
8 changed files with 32 additions and 10 deletions

View File

@@ -0,0 +1,2 @@
CWE,Sink identifier,Label
CWE-079,html,Cross-site scripting
1 CWE Sink identifier Label
2 CWE-079 html Cross-site scripting

View File

@@ -0,0 +1,2 @@
Framework name,URL,Namespace prefixes
System,,System.* System
1 Framework name URL Namespace prefixes
2 System System.* System

View File

@@ -0,0 +1,14 @@
/**
* @name Framework coverage
* @description The number of API endpoints covered by CSV models sorted by
* package and source-, sink-, and summary-kind.
* @kind table
* @id cs/meta/framework-coverage
*/
import csharp
import semmle.code.csharp.dataflow.ExternalFlow
from string namespace, int pkgs, string kind, string part, int n
where modelCoverage(namespace, pkgs, kind, part, n)
select namespace, pkgs, kind, part, n

View File

@@ -24,11 +24,9 @@ def compare_folders(folder1, folder2, output_file):
Compares the contents of two folders and writes the differences to the output file. Compares the contents of two folders and writes the differences to the output file.
""" """
languages = ['java']
return_md = "" return_md = ""
for lang in languages: for lang in settings.languages:
expected_files = "" expected_files = ""
generated_output_rst = settings.generated_output_rst.format( generated_output_rst = settings.generated_output_rst.format(

View File

@@ -22,8 +22,7 @@ owner = repo.split('/')[0]
def overwrite_files(): def overwrite_files():
languages = ['java'] for lang in settings.languages:
for lang in languages:
repo_output_rst = settings.repo_output_rst.format(language=lang) repo_output_rst = settings.repo_output_rst.format(language=lang)
repo_output_csv = settings.repo_output_csv.format(language=lang) repo_output_csv = settings.repo_output_csv.format(language=lang)

View File

@@ -110,7 +110,9 @@ if len(sys.argv) > 2:
# Languages for which we want to generate coverage reports. # Languages for which we want to generate coverage reports.
configs = [ configs = [
utils.LanguageConfig( utils.LanguageConfig(
"java", "Java", ".java", query_prefix + "java/ql/src/meta/frameworks/Coverage.ql") "java", "Java", ".java", query_prefix + "java/ql/src/meta/frameworks/Coverage.ql"),
utils.LanguageConfig(
"csharp", "C#", ".cs", query_prefix + "csharp/ql/src/meta/frameworks/Coverage.ql")
] ]
# The names of input and output files. The placeholder {language} is replaced with the language name. # The names of input and output files. The placeholder {language} is replaced with the language name.
@@ -125,8 +127,8 @@ else:
output_rst = settings.generated_output_rst output_rst = settings.generated_output_rst
output_csv = settings.generated_output_csv output_csv = settings.generated_output_csv
for config in configs: for lang in settings.languages:
lang = config.lang config = [c for c in configs if c.lang == lang][0]
db = "empty-" + lang db = "empty-" + lang
ql_output = output_ql_csv.format(language=lang) ql_output = output_ql_csv.format(language=lang)
utils.create_empty_database(lang, config.ext, db) utils.create_empty_database(lang, config.ext, db)

View File

@@ -71,13 +71,16 @@ else:
configs = [ configs = [
utils.LanguageConfig( utils.LanguageConfig(
"java", "Java", ".java", "java/ql/src/meta/frameworks/Coverage.ql") "java", "Java", ".java", "java/ql/src/meta/frameworks/Coverage.ql"),
utils.LanguageConfig(
"csharp", "C#", ".cs", "csharp/ql/src/meta/frameworks/Coverage.ql")
] ]
# todo: change this when we cover multiple languages. We should compute the SHAs # todo: change this when we cover multiple languages. We should compute the SHAs
# only once and not per language # only once and not per language
output_prefix = "framework-coverage-timeseries-" output_prefix = "framework-coverage-timeseries-"
for config in configs: for lang in settings.languages:
config = [c for c in configs if c.lang == lang][0]
with open(output_prefix + config.lang + ".csv", 'w', newline='') as csvfile_total: with open(output_prefix + config.lang + ".csv", 'w', newline='') as csvfile_total:
with open(output_prefix + config.lang + "-packages.csv", 'w', newline='') as csvfile_packages: with open(output_prefix + config.lang + "-packages.csv", 'w', newline='') as csvfile_packages:
csvwriter_total = csv.writer(csvfile_total) csvwriter_total = csv.writer(csvfile_total)

View File

@@ -20,3 +20,5 @@ output_rst_file_name = "coverage.rst"
output_csv_file_name = "coverage.csv" output_csv_file_name = "coverage.csv"
repo_output_rst = documentation_folder + output_rst_file_name repo_output_rst = documentation_folder + output_rst_file_name
repo_output_csv = documentation_folder + output_csv_file_name repo_output_csv = documentation_folder + output_csv_file_name
languages = ['java', 'csharp']