Skip to content

Commit bd6e233

Browse files
authored
Merge pull request #16519 from github/criemen/bazel-csharp
Bazel-build for C# language pack
2 parents 1e7b3d0 + 735bea6 commit bd6e233

File tree

41 files changed

+817
-21
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+817
-21
lines changed

.bazelrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,6 @@ common --enable_runfiles
2222
common --registry=file:///%workspace%/misc/bazel/registry
2323
common --registry=https://bcr.bazel.build
2424

25+
common --@rules_dotnet//dotnet/settings:strict_deps=false
26+
2527
try-import %workspace%/local.bazelrc

.bazelrc.internal

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,9 @@
22

33
common --registry=file:///%workspace%/ql/misc/bazel/registry
44
common --registry=https://bcr.bazel.build
5+
6+
# See bazelbuild/rules_dotnet#413: strict_deps in C# also appliy to 3rd-party deps, and when we pull
7+
# in (for example) the xunit package, there's no code in this at all, it just depends transitively on
8+
# its implementation packages without providing any code itself.
9+
# We either can depend on internal implementation details, or turn of strict deps.
10+
common --@rules_dotnet//dotnet/settings:strict_deps=false

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,5 @@ ruby/extractor/cargo-bazel-lock.json -merge
7878
csharp/paket.lock linguist-generated=true
7979
# needs eol=crlf, as `paket` touches this file and saves it als crlf
8080
csharp/.paket/Paket.Restore.targets linguist-generated=true eol=crlf
81+
csharp/paket.main.bzl linguist-generated=true
82+
csharp/paket.main_extension.bzl linguist-generated=true

BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
exports_files(["LICENSE"])

MODULE.bazel

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,19 @@ bazel_dep(name = "abseil-cpp", version = "20240116.0", repo_name = "absl")
2323
bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name = "json")
2424
bazel_dep(name = "fmt", version = "10.0.0")
2525
bazel_dep(name = "gazelle", version = "0.36.0")
26+
bazel_dep(name = "rules_dotnet", version = "0.15.1")
2627

2728
bazel_dep(name = "buildifier_prebuilt", version = "6.4.0", dev_dependency = True)
2829

30+
dotnet = use_extension("@rules_dotnet//dotnet:extensions.bzl", "dotnet")
31+
dotnet.toolchain(dotnet_version = "8.0.101")
32+
use_repo(dotnet, "dotnet_toolchains")
33+
34+
register_toolchains("@dotnet_toolchains//:all")
35+
36+
csharp_main_extension = use_extension("//csharp:paket.main_extension.bzl", "main_extension")
37+
use_repo(csharp_main_extension, "paket.main")
38+
2939
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
3040
pip.parse(
3141
hub_name = "codegen_deps",

csharp/BUILD.bazel

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
load("@rules_pkg//pkg:mappings.bzl", "pkg_filegroup", "pkg_files")
2+
load("@semmle_code//:dist.bzl", "dist")
3+
load("//misc/bazel:pkg.bzl", "codeql_pkg_files_overlay")
4+
15
package(default_visibility = ["//visibility:public"])
26

37
alias(
@@ -9,3 +13,76 @@ alias(
913
name = "dbscheme-stats",
1014
actual = "//csharp/ql/lib:dbscheme-stats",
1115
)
16+
17+
pkg_files(
18+
name = "dbscheme-group",
19+
srcs = [
20+
":dbscheme",
21+
":dbscheme-stats",
22+
],
23+
strip_prefix = None,
24+
)
25+
26+
pkg_files(
27+
name = "extractor-asp",
28+
srcs = [
29+
"@semmle_code//extractor-asp:extractor-asp-fat",
30+
],
31+
prefix = "tools",
32+
renames = {
33+
"@semmle_code//extractor-asp:extractor-asp-fat": "extractor-asp.jar",
34+
},
35+
)
36+
37+
pkg_filegroup(
38+
name = "db-files",
39+
srcs = [
40+
":dbscheme-group",
41+
"//csharp/downgrades",
42+
],
43+
)
44+
45+
pkg_files(
46+
name = "extra-files",
47+
srcs = [
48+
":codeql-extractor.yml",
49+
"//:LICENSE",
50+
],
51+
)
52+
53+
codeql_pkg_files_overlay(
54+
name = "extractor-arch-overlay",
55+
srcs = [
56+
"//csharp/autobuilder/Semmle.Autobuild.CSharp",
57+
"//csharp/extractor/Semmle.Extraction.CSharp.Driver",
58+
"//csharp/extractor/Semmle.Extraction.CSharp.Standalone",
59+
],
60+
)
61+
62+
dist(
63+
name = "extractor-arch",
64+
srcs = [":extractor-arch-overlay"],
65+
)
66+
67+
dist(
68+
name = "extractor-generic",
69+
srcs = [
70+
":dbscheme-group",
71+
":extra-files",
72+
":extractor-asp",
73+
"//csharp/downgrades",
74+
"//csharp/tools",
75+
],
76+
prefix = "csharp",
77+
visibility = ["//visibility:public"],
78+
)
79+
80+
test_suite(
81+
name = "unit-tests",
82+
tags = ["csharp"],
83+
tests = [
84+
"//csharp/autobuilder/Semmle.Autobuild.CSharp.Tests",
85+
"//csharp/autobuilder/Semmle.Autobuild.Cpp.Tests",
86+
"//csharp/extractor/Semmle.Extraction.Tests",
87+
],
88+
)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
load(
2+
"//misc/bazel:csharp.bzl",
3+
"codeql_xunit_test",
4+
)
5+
6+
codeql_xunit_test(
7+
name = "Semmle.Autobuild.CSharp.Tests",
8+
srcs = glob([
9+
"*.cs",
10+
"Properties/*.cs",
11+
]),
12+
deps = [
13+
"//csharp/autobuilder/Semmle.Autobuild.CSharp:bin/Semmle.Autobuild.CSharp",
14+
"//csharp/autobuilder/Semmle.Autobuild.Shared",
15+
"@paket.main//microsoft.net.test.sdk",
16+
"@paket.main//system.io.filesystem",
17+
],
18+
)

csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,9 @@ public void DownloadFile(string address, string fileName)
215215

216216
internal class TestDiagnosticWriter : IDiagnosticsWriter
217217
{
218-
public IList<DiagnosticMessage> Diagnostics { get; } = new List<DiagnosticMessage>();
218+
public IList<Semmle.Util.DiagnosticMessage> Diagnostics { get; } = new List<Semmle.Util.DiagnosticMessage>();
219219

220-
public void AddEntry(DiagnosticMessage message) => this.Diagnostics.Add(message);
220+
public void AddEntry(Semmle.Util.DiagnosticMessage message) => this.Diagnostics.Add(message);
221221

222222
public void Dispose() { }
223223
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
load(
2+
"//misc/bazel:csharp.bzl",
3+
"codeql_csharp_binary",
4+
)
5+
6+
codeql_csharp_binary(
7+
name = "Semmle.Autobuild.CSharp",
8+
srcs = glob([
9+
"*.cs",
10+
"Properties/*.cs",
11+
]),
12+
visibility = ["//csharp:__subpackages__"],
13+
deps = [
14+
"//csharp/autobuilder/Semmle.Autobuild.Shared",
15+
"//csharp/extractor/Semmle.Extraction.CSharp",
16+
"//csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching",
17+
"//csharp/extractor/Semmle.Extraction.CSharp.Standalone:bin/Semmle.Extraction.CSharp.Standalone",
18+
"//csharp/extractor/Semmle.Util",
19+
"@paket.main//microsoft.build",
20+
"@paket.main//newtonsoft.json",
21+
],
22+
)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
load(
2+
"//misc/bazel:csharp.bzl",
3+
"codeql_xunit_test",
4+
)
5+
6+
codeql_xunit_test(
7+
name = "Semmle.Autobuild.Cpp.Tests",
8+
srcs = glob([
9+
"*.cs",
10+
"Properties/*.cs",
11+
]),
12+
deps = [
13+
"//csharp/autobuilder/Semmle.Autobuild.Cpp:bin/Semmle.Autobuild.Cpp",
14+
"//csharp/autobuilder/Semmle.Autobuild.Shared",
15+
"@paket.main//microsoft.net.test.sdk",
16+
"@paket.main//system.io.filesystem",
17+
],
18+
)

0 commit comments

Comments
 (0)