Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add exception for template.Must #33

Open
zemanlx opened this issue Mar 3, 2022 · 3 comments
Open

Add exception for template.Must #33

zemanlx opened this issue Mar 3, 2022 · 3 comments

Comments

@zemanlx
Copy link

zemanlx commented Mar 3, 2022

Hello,

First, thank you for providing this linter! I am using it as part of golangci-lint. I am now working on a project that have some regex.Must in global variables and have noticed that these are excluded from linter when used as global variables.

I assume that is because they are in this case compile-time errors if something goes wrong.

Now I also need to do same thing with templates for policy documents which are part of HTTP request body. Template documents are defined as consts and in global variable I am doing following:

	adminPolicyTemplate        = template.Must(template.New("AdminPolicy").Parse(AdminPolicy))
	readerPolicyTemplate       = template.Must(template.New("ReaderPolicy").Parse(ReaderPolicy))

which if anything is wrong with AdminPolicy template document or ReaderPolicy template document are compiler-ime errors, same as for regex. Therefore I think it would be nice to have same exception for template.Must as we have for regex.Must.

@zemanlx
Copy link
Author

zemanlx commented Mar 3, 2022

@leighmcculloch I can also do the PR if you agree that it is a good idea.

@leighmcculloch
Copy link
Owner

I'm on the fence on this one. I have seen this be a somewhat common pattern to store these values in global variables, but it continues to perpetuate the idea of using global variables. I don't use templates a whole lot myself though, are there ways that aren't obtuse to using them without globals?

@zemanlx
Copy link
Author

zemanlx commented Jan 16, 2023

Not sure I understand what you mean. There are always ways around it, but they would be consts if they could 😉, so the next best thing is global variables. They never change in my package and are the same use case as the regex. Right now, I am disabling your linter for those lines, but I see no harm in allowing them by default as regex-es are.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants