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

Prettify decompiled code #311

Open
Mrgaton opened this issue Apr 15, 2024 · 7 comments
Open

Prettify decompiled code #311

Mrgaton opened this issue Apr 15, 2024 · 7 comments
Labels
enhancement New feature or request

Comments

@Mrgaton
Copy link

Mrgaton commented Apr 15, 2024

Problem Description

Prettify code from this

image

to something more like this

image

Proposal

It would be great to prettify some ifs if the bool definition isn't too big

also would be great if the variables could get more family-friendly names like

from this

	bool flag = DocumentSettings.DefaultKeyLength != null;
			if (flag)
			{
				this.KeyLength = DocumentSettings.DefaultKeyLength;
			}

to this

			bool defaultKeyLength = DocumentSettings.DefaultKeyLength != null;

			if (defaultKeyLength)
			{
				this.KeyLength = DocumentSettings.DefaultKeyLength;
			}

Alternatives

No response

Additional Context

No response

@Mrgaton Mrgaton added the enhancement New feature or request label Apr 15, 2024
@Mrgaton
Copy link
Author

Mrgaton commented Apr 15, 2024

for example here is checking if secret is null so would be nice if the variable could be named something like the

from

		public async Task<bool> Remove(string secret)
		{
			bool flag = secret == null;
			if (flag)
			{
				throw new ArgumentNullException("secret");
			}
			return await JSPasteClient.Remove(this._key, secret);
		}

to

		public async Task<bool> Remove(string secret)
		{
			bool secretNull = secret == null;

			if (secretNull)
			{
				throw new ArgumentNullException("secret");
			}

			return await JSPasteClient.Remove(this._key, secret);
		}

@Mrgaton
Copy link
Author

Mrgaton commented Apr 15, 2024

also put some new lines to some code like for ifs

@Mrgaton
Copy link
Author

Mrgaton commented Apr 15, 2024

and the nullables replace it with the '?' like in normal code

from this

		[Nullable(2)]
		public string Password
		{
			[NullableContext(2)]
			get;
			[NullableContext(2)]
			set;
		}

to this

		public string? Password { get; set; }

@Mrgaton Mrgaton changed the title Prettify code Prettify decompiled code Apr 15, 2024
@GazziFX
Copy link

GazziFX commented Apr 15, 2024

Nullable support is available in new-ilspy branch, and local name generation might be also changed a bit

@Mrgaton
Copy link
Author

Mrgaton commented Apr 15, 2024

If I get a new idea I will post it here

@KieranDevvs
Copy link

KieranDevvs commented Jun 3, 2024

I don't even know how this would work. This is a purely subjective feature. Your idea of "prettyfying" the branches into single lines is horrible in my opinion. Branches should objectively always be wrapped in a scope so you don't fall for the famous apple Apple 'GOTO FAIL;' bug. In regards to separating lines out by whitespace, what is the logic behind that?
ie which one is correct? (its a trick question, neither are "correct")

var a = SomeClass1.Abc();
var b = SomeClass2.Xyz();

vs

var a = SomeClass1.Abc();

var b = SomeClass2.Xyz();

In regards to the nullability issue, that's the only valid concern that I see and its already fixed by a newer version of ILSpy.
The only way I see this being even remotely possible is to have local linting/style configurations that each user can change. But that begs the question, does that really belong in a decompiler? This isnt an IDE in the traditional sense. Export the code into a Visual Studio project and use the actual IDE to format it instead.

It looks like this has already been suggested: #2

@Mrgaton
Copy link
Author

Mrgaton commented Jun 4, 2024

Ok you're right

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

No branches or pull requests

3 participants