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>
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # 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.
 |