CA2001: Evitar chamar métodos problemáticos

Item Valor
RuleId CA2001
Categoria Microsoft.Reliability
Alteração da falha Sem interrupção

Causa

Um membro chama um método potencialmente perigoso ou problemático.

Descrição da regra

Evite fazer chamadas de método desnecessárias e potencialmente perigosas. Uma violação dessa regra ocorre quando um membro chama um dos seguintes métodos:

Método Descrição
System.GC.Collect Chamando GC. A coleta pode afetar significativamente o desempenho do aplicativo e raramente é necessária. Para obter mais informações, confira a entrada no blog DeSidbits de Desempenho do Rico Mariani no MSDN.
System.Threading.Thread.Resume

System.Threading.Thread.Suspend
Thread.Suspend e Thread.Resume foram preteridos devido ao comportamento imprevisível. Use outras classes no namespace System.Threading, como Monitor, Mutex e Semaphore, para sincronizar threads ou proteger recursos.
System.Runtime.InteropServices.SafeHandle.DangerousGetHandle O método DangerousGetHandle representa um risco de segurança porque pode retornar um identificador que não é válido. Para obter mais informações sobre como usar o método DangerousGetHandle, consulte os métodos DangerousAddRef e DangerousRelease.
System.Reflection.Assembly.LoadFrom

System.Reflection.Assembly.LoadFile

System.Reflection.Assembly.LoadWithPartialName
Esses métodos podem carregar assemblies de locais inesperados. Por exemplo, consulte as postagens no blog Notas CLR do .NET de Suzanne Cook LoadFile vs. LoadFrom e Escolhendo um contexto de associação para obter informações sobre métodos que carregam assemblies.
CoSetProxyBlanket

CoInitializeSecurity
Quando o código do usuário começa a ser executado em um processo gerenciado, é tarde demais para chamar CoSetProxyBlanket de forma confiável. O Common Language Runtime (CLR)executa ações de inicialização que podem impedir que os usuários P/Invoke tenham êxito.

Se você precisar chamar CoSetProxyBlanket um aplicativo gerenciado, recomendamos que inicie o processo usando um executável de código nativo (C++), chame CoSetProxyBlanket no código nativo e inicie o aplicativo de código gerenciado em processo. (Especifique um número de versão de runtime.)

Como corrigir violações

Para corrigir uma violação dessa regra, remova ou substitua a chamada para o método perigoso ou problemático.

Quando suprimir avisos

Suprima mensagens dessa regra somente quando nenhuma alternativa ao método problemático estiver disponível.

Confira também