O LintSpy é uma extensão desenvolvida para o Visual Studio que visa facilitar o trabalho em equipe, sugerindo a adoção das melhores práticas de nomenclatura e documentação em tempo real, visando assim um código C# limpo, claro e objetivo.
Notas de versão
| Versão |
Principais alterações |
| 1.0.0 |
Versão inicial |
| 1.0.1 |
Ignora classes do Scaffold (.NET) que tenham anotações [Table()] ou que estendam de DbContext |
| 1.0.2 |
Verifica todos os métodos, menos os com Data Anotations específicos |
Resumo
O LintSpy visa padronizar nomenclatura e documentação de códigos no momento da programação, sublinhando códigos em desacordo, exibindo na barra de rolagem a localização do ocorrido e sugerindo adoção das regras abaixo descritas. Também é possível visualizar todos as ocorrências através da lista de warnings do Visual Studio.
Desenvolvida pela equipe de TI da Coopavel (Cooperativa Agroindustrial de Cascavel/PR)
Veja abaixo um exemplo do LintSpy em funcionamento:
Exibição do warning no trecho incorreto e na barra de rolagem
Exibição da mensagem de erro ao deixar o cursor sobre o trecho marcado
Exibição de possibilidade de correção
Regras
- Classes devem estar em Pascal Case;
- O prefixo de variáveis deve seguir as tabelas na seção Prefixos. Classes internas não são consideradas;
- Namespaces devem estar em Pascal Case;
- Interfaces e classes abstratas devem ter o nome começando com a letra 'I';
- Métodos devem possuir comentário de documentação;
- O nome do método deve estar em Pascal Case;
- Parâmetros de métodos devem iniciar com a letra 'p';
- Atributos de classe devem possuir summary;
- Underscores (_) não são permitidos para nenhum nome;
- Constantes devem estar em Upper Case (Caso em que é permitido o uso de underscores);
- Enums devem estar em Pascal Case;
- Interfaces devem estar em Pascal Case após a letra 'I';
- Parâmetros devem estar em Pascal Case após o 'p';
- Variáveis devem estar em Pascal Case após o prefixo;
- Underscores (_) não são permitidos para nomes de variáveis (Caso especial);
- Parâmetros de um método devem estar no Summary do mesmo;
- Campos do Summary não podem ficar em branco;
- Propriedades devem estar em Pascal Case;
- Estruturas de controle de fluxo devem possuir bloco delimitado por chaves ({});
- Comentário não pode possuir parâmetros que não possuam correspondência;
- Comentário deve ter o retorno do método devidamente comentado;
- Pragma para desabilitar regras deve ter comentário com razão;
Prefixos
Prefixos de variáveis possuem três letras minúsculas seguindo as tabelas abaixo descritas.
Sobre Todos
As variáveis devem ser nomeadas utilizando o prefixo da tabela a seguir caso a classe em questão possua alguma das palavras listadas.
| Palavra |
Prefixo |
| Collection |
clt |
| Column |
cln |
| Row |
row |
Demais
Classes que não possuam as palavras da tabela anterior devem utilizar o prefixo indicado na tabela abaixo de acordo com o nome da classe ou agrupamento.
| Classe |
Pref. |
Classe |
Pref. |
Classe |
Pref. |
| AdvRichTextBox |
rtb |
ImageList |
ils |
SqlCommand |
scm |
| ArrayList |
arl |
Int |
int |
SqlConnection |
scn |
| Backgroundworker |
bgw |
Jarray |
jar |
SqlDataAdapter |
sda |
| Bool |
bln |
Jobject |
job |
StatusBar |
sta |
| Boolean |
bln |
Jtoken |
jtk |
StatusStrip |
sst |
| Button |
btn |
Label |
lbl |
StreamWriter |
stw |
| Byte |
byt |
LinkLabel |
lnk |
String |
str |
| CampoData |
txt |
List |
lst |
StringBuilder |
stb |
| CampoDataHora |
txt |
ListBox |
lst |
TabControl |
tbc |
| CampoDecimal |
txt |
ListView |
lvw |
TableLayoutPanel |
tlp |
| CampoNumerico |
txt |
Long |
lon |
TabPage |
tbp |
| CampoTelefone |
txt |
MaskedTextBox |
txt |
TextBox |
txt |
| Char |
chr |
MemoryStream |
mms |
Textboxnumauto |
txt |
| CheckBox |
chk |
Menu |
mnu |
Timer |
tmr |
| CheckedListBox |
clb |
MenuStrip |
mns |
TimeSpan |
tms |
| ColorDialog |
cld |
MonthCalendar |
mcl |
ToolBar |
tlb |
| ComboBox |
cbo |
NotifyIcon |
nti |
ToolStrip |
tsp |
| ContextMenu |
cmn |
NumericUpDown |
nud |
ToolStripButton |
tsb |
| Control |
ctr |
OleDbCommand |
ocm |
ToolStripDrop... |
|
| DataGridView |
dgv |
OleDbConnection |
ocn |
DownButton |
btn |
| DataGridViewCoopavel |
dgv |
OleDbDataAdapter |
oda |
ToolStripMenuItem |
tmi |
| DataSet |
dts |
OpenFileDialog |
ofd |
ToolStripProgressBar |
prg |
| DataTable |
dtt |
PageSetup Dialog |
psd |
ToolStripSplitButton |
btn |
| DataView |
dtv |
Panel |
pnl |
ToolStripStatusLabel |
lbl |
| DateTime |
dta |
PictureBox |
pic |
ToolTip |
tip |
| DateTimePicker |
dtp |
PrintDialog |
ptd |
TrackBar |
trb |
| DB2Command |
dcm |
PrintDocument |
prn |
TreeView |
tre |
| DB2Connection |
dcn |
PrintPreviewControl |
ppc |
Uint |
uin |
| DB2DataAdapter |
dda |
PrintPreviewDialog |
ppd |
Ulong |
uln |
| Decimal |
dec |
Process |
prc |
Ushort |
ush |
| Dictionary |
dic |
Processando |
pro |
VScrollBar |
vsb |
| DomainUpDown |
upd |
ProgressBar |
prg |
XmlAttribute |
xat |
| Double |
dob |
RadioButton |
rad |
XmlDictionary |
xdi |
| ErrorProvider |
err |
Regex |
rgx |
XmlDocument |
xdo |
| Float |
flt |
RichTextBox |
rtf |
XmlElement |
xel |
| FontDialog |
ftd |
SaveFileDialog |
sfd |
XmlEntity |
xen |
| Formulários |
frm |
Sbyte |
sby |
XmlNode |
xnd |
| GroupBox |
grp |
Short |
sht |
XmlNodeList |
xnl |
| HelpProvider |
hlp |
SpliterContainer |
spc |
XmlReader |
xre |
| HScrollBar |
hsb |
Splitter |
spt |
XmlWriter |
xwr |
Classes que não se encaixam nas regras de prefixagem acima listadas devem possuir o prefixo 'obj'.