Merge pull request #100568 from Repiteo/dotnet/warning-as-error

C#: Add option to treat warnings as errors
This commit is contained in:
Rémi Verschelde 2024-12-18 19:50:20 +01:00 committed by GitHub
commit 024efda0b4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 5 deletions

View File

@ -176,7 +176,7 @@ jobs:
if: matrix.build-mono
run: |
dotnet --info
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=linuxbsd
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=linuxbsd --werror
- name: Prepare artifact
if: matrix.artifact

View File

@ -194,7 +194,7 @@ def run_msbuild(tools: ToolsLocation, sln: str, chdir_to: str, msbuild_args: Opt
return subprocess.call(args, env=msbuild_env, cwd=chdir_to)
def build_godot_api(msbuild_tool, module_dir, output_dir, push_nupkgs_local, precision, no_deprecated):
def build_godot_api(msbuild_tool, module_dir, output_dir, push_nupkgs_local, precision, no_deprecated, werror):
target_filenames = [
"GodotSharp.dll",
"GodotSharp.pdb",
@ -219,6 +219,8 @@ def build_godot_api(msbuild_tool, module_dir, output_dir, push_nupkgs_local, pre
args += ["/p:GodotFloat64=true"]
if no_deprecated:
args += ["/p:GodotNoDeprecated=true"]
if werror:
args += ["/p:TreatWarningsAsErrors=true"]
sln = os.path.join(module_dir, "glue/GodotSharp/GodotSharp.sln")
exit_code = run_msbuild(msbuild_tool, sln=sln, chdir_to=module_dir, msbuild_args=args)
@ -339,13 +341,15 @@ def generate_sdk_package_versions():
def build_all(
msbuild_tool, module_dir, output_dir, godot_platform, dev_debug, push_nupkgs_local, precision, no_deprecated
msbuild_tool, module_dir, output_dir, godot_platform, dev_debug, push_nupkgs_local, precision, no_deprecated, werror
):
# Generate SdkPackageVersions.props and VersionDocsUrl constant
generate_sdk_package_versions()
# Godot API
exit_code = build_godot_api(msbuild_tool, module_dir, output_dir, push_nupkgs_local, precision, no_deprecated)
exit_code = build_godot_api(
msbuild_tool, module_dir, output_dir, push_nupkgs_local, precision, no_deprecated, werror
)
if exit_code != 0:
return exit_code
@ -402,6 +406,7 @@ def main():
default=False,
help="Build GodotSharp without using deprecated features. This is required, if the engine was built with 'deprecated=no'.",
)
parser.add_argument("--werror", action="store_true", default=False, help="Treat compiler warnings as errors.")
args = parser.parse_args()
@ -427,6 +432,7 @@ def main():
push_nupkgs_local,
args.precision,
args.no_deprecated,
args.werror,
)
sys.exit(exit_code)

View File

@ -12,6 +12,8 @@ namespace Godot.Bridge;
public static partial class ScriptManagerBridge
{
[SuppressMessage("Design", "CA1001", MessageId = "Types that own disposable fields should be disposable",
Justification = "Not applicable. The class functions as a persistent singleton.")]
private class ScriptTypeBiMap
{
public readonly ReaderWriterLockSlim ReadWriteLock = new(LockRecursionPolicy.SupportsRecursion);
@ -66,7 +68,7 @@ public static partial class ScriptManagerBridge
private System.Collections.Generic.Dictionary<string, Type> _pathTypeMap = new();
private System.Collections.Generic.Dictionary<Type, string> _typePathMap = new();
public IReadOnlyCollection<string> Paths => _pathTypeMap.Keys;
public System.Collections.Generic.Dictionary<string, Type>.KeyCollection Paths => _pathTypeMap.Keys;
public void Add(string scriptPath, Type scriptType)
{