| |
I love the fact that I can create private and shared queries. Apparently, so does everyone else. I've seen the number of shared queries grow and grow over the past few weeks. Granted, I think this is in part because people get a new toy and they want to see what it does, so they go hog-wild with it; but at the same time, the shared queries are very useful. Most of the time, tho, they're only useful for certain groups. For instance, I don't care about the 5 different reports the QA team wants to run. So, why should I have to look at them all when I am in the shared queries folder? I shouldn't. The way I get around this is by creating shortcuts to the queries I use; but that doesn't resolve the clutter issue. There needs to be a way to add some organization here. Having the ability to add folders would resolve that immediately. I'm not sure whether a better solution exists, but I'd be open to anything.
Edit: This has already been reported three times (1 , 2 , 3 ). Looks like it will be included in a future release, probably the next release.
One thing I hate about the great and wonderful integration between Visual Studio and Team Foundation is, when I perform some source control action (i.e. get latest), I lose all control of the app. This means I have to wait who knows how long until I can do other TFS tasks, like looking at the open work items. Work items have nothing to do with my check-in status -- well, I can see how an items status might be updated during a check-in, but you'll always have concurrency issues like that, no matter what you do. I would love to see source control actions not lock up the environment; especially if the environment is going to be central to all project actions.
Perhaps this wouldn't be an issue if there was some information on who has a file checked out easily accessible, but until then, I want to have the ability to browse directly to a file in the Source Control Explorer. I'm thinking of an item on the context menu of the file in question from the Solution Explorer. This should work fine.
When a project in Visual Studio is tied to source control and a file is checked out, there's a user icon on the file. This is nice, but when you hover over the item, the tooltip says, "Checked out by someone else or in another place." Gee, that's not very useful. What if I want to know who has it checked out? The only answer I know of is to find the file in the source control viewer, which can be tedious at times. Having this info in a tooltip would be nice. Better yet, bring me to the user's profile or something.
Here's a simple one that should be resolved now that the DSL Tools are available. As a matter of fact, I believe there's a sample of it in the SDK. Either way, I want a use case designer in Visual Studio. This would really be a great move towards a true model-driven architecture (MDA) environment.
I've said it before and I'll say it again: code analysis should be a standard practice on all projects... well, I'll make an exception for throw-away demos. There are times, tho, when you just don't want to deal with the errors. For instance, if you are using an open source library, you'll most likely want to keep that code with yours; however, in most cases, you won't go thru and change it to apply the same standards you do on your own project. Because of this, it would be very nice to have the ability to suppress all code analysis messages or simply a category. Either way would be great. Currently, you can suppress a message for an assembly, class, or class member -- there's even a way to get a little deeper than class member, but that's where the suppression is documented. I'd like to see the SuppressMessage() and SuppressMessage(category). Obviously, these would suppress all messages or those in a specified category. This came up when a co-worker was checking in Enterprise Library code into the repository.
Visual Studio has very few build options. The latest release added the ability to debug the active project, which is very useful; however, I'd like to see the ability to only build the active project. One option that might be nice is to build the active project or the active and dependent projects. Honestly, I'm more interested in an active-only build, but more options are good. This almost makes me wonder about what other build options might be nice.
Visual Studio's regular expression (regex) search isn't quite standard, as I've mentioned before. Fortunately, you can do most of what you need despite this. One thing missing, however, is the optional character/word identifier (question mark in "standard" regex). For instance, colou?r should return color and colour. The only work-around I know of is to use the 0-to-many occurrences identifier (asterisk). This means you'd search for colou*r, which would give you color and colour; however, it would also give you colouuuuuuuuuuuuuuur. As you can see, this would be a problem.
Luckily, in most scenarios, the lack of the optional identifier won't affect you too much. This is assuming you're searching compilation-ready code, that is. Let's use a VB search as an example. Searching for :i\.ToString(\(\))* should return something.ToString() and something.ToString().
Like I said, this scenario works just fine because, if your code is compilable, you should never have something.ToString()(). There are, however, circumstances where the 0-to-many identifier won't suffice. Of course, these are harder to come up with since they're more rare, but I'll do my best... Let's consider a search for declared strings and one-dimension string arrays, string(\[\])*:Wh+:i, which is intended to find string abc and string[] xyz. As you might imagine, there is a likelihood that you may also get string[][] abc, which is the problem in this case. Granted, I realize this may not be an ideal example, but the problem usually only comes into play when you have long, complicated search strings. The work-around for this case is to use the or operator: (string|string\[\]):Wh+:i. This will return either string abc or string[] xyz, but nothing else. As you can see, this makes the search string longer. Now, imagine if you're doing an even more complicated search for string-checking (i.e. someString.Equals(""), someString.Equals(anotherString), !someString.Equals(""), someString == "", someString != "", someString == null, someString != null, someString == null || someString.Length == 0, or someString != null && someString.Length > 0... just to name a few). The possibilities are seemingly endless. Of course, this is going to be a ridiculously long search string, anyway, but the optional identifier would make this so much easier.
FYI: :i is a VS-only shortcut that represents a C++ identifier ([a-zA-Z_$][a-zA-Z0-9_$]*)
FYI: :Wh is a VS-only shortcut that represents a white space character ([ \t\n\r] -- there might be a few others, too)
If you haven't caught my drift, yet, to sum it all up, I'd like to have an optional identifier. Hopefully, the question mark.
I don't think the title I'm using is really getting the point across. What I'm really wanting is for the details behind code analysis warnings to let me view a report of a potential savings. This probably won't apply most of the time, but for something like the performance section, it's a huge deal. I want to know how much the corresponding change will benefit me. The reason this came to mind is because I'm working thru a group of projects that have around 15,000 code analysis messages -- yeah, it sucks. Well, I may or may not get thru them all, but the performance issues are the most important. Because of this, I'd really like to know exactly how each individual change may affect the system. Granted, I'm willing to accept the fact that the results may vary, but give me a general idea. Most of the perf changes I've seen will be of minor benefit... well, that's my logical determination based on the limited knowledge I have of the CLR inner-workings. I'd like to see an assessment of which changes will be most valuable and start with those. That information would be invaluable in a situation like this.
Code analysis is a wonderful thing and so is refactoring. With so many code analysis fixes that are simple refactoring techniques, why not create a simplistic way to refactor code for code analysis tweaks!? Honestly, I'm not surprised it's not in the existing release and I do expect that it will be in there in the future, but I haven't heard of anything like that, so we'll see.
One example is the code analysis performance warning regarding unnecessary casting (CA1800). This comes up a lot when you check to see if a generic object is of a more specific type and then cast it after that check. Instead, the practice is to use the as keyword, which will default to null, if the types aren't compatible. Consider this before and after block as what the refactoring could do...
Before if (someObject is CustomObject)
((CustomObject)someObject).DoSomething();
After CustomObject custom = someObject as CustomObject;
if (custom != null)
custom.DoSomething();
Not only is the code easier to read, it's better performing. Then again, I'm not arguing for or against the code analysis. I simply want this simple task automated.
One of the great features of Visual Studio 2005 is the ability to dynamically add namespace declarations to your using/imports block at the top of the document while you're hacking away at code. As anal as I am about my code, I just wish the namespaces would be grouped and ordered in some fashion. All the feature does is toss the namespace to the end of the list; however, what I'd like to see is the ability to configure a rule for how to group and order the names. I think the best way to explain myself is with an example. So, let's say I'm using 6 namespaces: 3 .NET BCL namespaces, 2 third-party namespaces, and 1 namespace from my app. I want them all alphabetized and grouped as such, like so... using System;
using System.Text;
using System.Web;
using Indigo.Business;
using Indigo.Web;
using Flanakin.Business;
This is helpful for when you're looking thru the file, you can see the namespaces at a very quick glance. Granted, you don't really need to look at them much, but if they have to be there, it only makes sense to put them in some sort of logical order.
Obviously, this is the first time I've seen the VS diff utility, otherwise I wouldn't be posting so many issues in a row, but I've got one more. This time, it's a bug -- granted, a very, very trivial bug, but a bug nonetheless. When you click the Previous or Next Difference toolbar button and keep your mouse hovered over it, the image disappears. Well, let me qualify that. This only happens when you press the previous button on the second change or the next button on the second to last change (namely, the last click that ultimately disables the button).
This is one that I've found absolutely invaluable over the years: viewing line differences in a diff utility. The VS diff utility doesn't do this, which left me wondering where, in the 100+ character line, the change was. This is annoying. The UI should show me exactly what has changed. When picking my favorite diff utility, this was a top priority for me. I think that anyone who utilizes diffs on a daily basis would have to agree.
This is a pretty easy one, which I expect to be in the next version -- at least it should be. Syntax highlighting is a must-have in any code environment. Diff utilities are no different. There really isn't much else to say about it. This one's pretty cut-and-dry.
The diff utility available on the Check-In dialog in Visual Studio Team Edition (Compare option on the context menu) is very basic. I'd love to see this support editing of the file(s). Well, files that can be edited. I'm not sure if this diff utility can be applied to 2 files not in a version control repository, but if so, both should be editable. If not, obviously, only the local version would be.
For those questioning the usefulness of 2 local file comparisons, you obviously haven't been working in the configuration management (CM) world for very long. This can be crucial; especially, if you're managing the repository.
|
|
|
|