feat(wpcarro/blog): Create short post about C#
Inspired by Profpatsch's "Notes", here's a short post about a thing that happened today... Note: I'd like a way to convert `git log --format=%b` into blog posts (maybe). Maybe some commit metadata like `POST=true` Change-Id: I492c48c81891d9f64da8c8149d0d2bfa864ed731 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5889 Tested-by: BuildkiteCI Reviewed-by: wpcarro <wpcarro@gmail.com> Autosubmit: wpcarro <wpcarro@gmail.com>
This commit is contained in:
		
							parent
							
								
									46ba96544a
								
							
						
					
					
						commit
						ab1984c8ac
					
				
					 2 changed files with 47 additions and 0 deletions
				
			
		|  | @ -29,4 +29,11 @@ | |||
|     content = ./posts/auto-reboot-nixos.md; | ||||
|     draft = false; | ||||
|   } | ||||
|   { | ||||
|     key = "csharp-unused-variables"; | ||||
|     title = "Unused Variables Broke Prod"; | ||||
|     date = 1655840877; | ||||
|     content = ./posts/csharp-unused-variables.md; | ||||
|     draft = false; | ||||
|   } | ||||
| ] | ||||
|  |  | |||
							
								
								
									
										40
									
								
								users/wpcarro/website/blog/posts/csharp-unused-variables.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								users/wpcarro/website/blog/posts/csharp-unused-variables.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | |||
| # Unused Variables Broke Prod | ||||
| 
 | ||||
| **Problem**: This morning we broke production because (believe it or not) an | ||||
| unused variable went undetected. | ||||
| 
 | ||||
| **Solution**: Consume the variable in the relevant codepath. | ||||
| 
 | ||||
| **Further AI**: Treat unused variables as errors (which will block CI). | ||||
| 
 | ||||
| ## Warning/Disclaimer | ||||
| 
 | ||||
| I am not a C# programmer. I know close to nothing about C#. But at `$WORK`, one | ||||
| of our codebases is written in C#, so occasionally I interface with it. | ||||
| 
 | ||||
| ## Treating Unused Variables as Errors | ||||
| 
 | ||||
| C# uses `.csproj` files to configure projects. The following changes to our | ||||
| `.csproj` file WAI'd: | ||||
| 
 | ||||
| ```diff | ||||
| +    <!-- IDE0059: Remove unnecessary value assignment --> | ||||
| +    <WarningsAsErrors>IDE0059</WarningsAsErrors> | ||||
| +    <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> | ||||
| ``` | ||||
| 
 | ||||
| However, supporting this turned out to be a ~1h adventure... Why was this | ||||
| unexpectedly difficult? As it turns out, there are the 3x promising compiler | ||||
| warnings that I had to discover/try: | ||||
| 
 | ||||
| - `CS0219`: doesn't WAI (see "Note" here: https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs0219) | ||||
| - `CA1804`: silently unsupported (replaced by `IDE0059`) | ||||
| - `IDE0059`: WAIs | ||||
| 
 | ||||
| Legend: | ||||
| - `CS`: stands for C# | ||||
| - `CA`: stands for Code Analysis (I *think* a Visual Studio concept) | ||||
| - `IDE`: stands for IDE (I think *also* a Visual Studio concept) | ||||
| 
 | ||||
| For `CA` and `IDE` prefixed warnings, `EnforceCodeStyleInBuild` must also be | ||||
| enabled. | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue