¿Es posible suprimir un mensaje de defecto de gendarme específico? Me gustaría hacer esto en el código fuente con una bandera o algo así.Cómo suprimir los defectos de Gendarme?
Respuesta
Si utiliza el corredor de la consola, puede utilizar un archivo de defecto (fuera de la fuente) para suprimir cualquier defecto en un método, tipo o ensamblaje.
El nuevo Gendarme 2.8 tiene soporte básico (leer incompleto y defectuoso) para el atributo [SuppressMessage] (igual que fxcop). Espere que esta característica funcione correctamente una vez que se libere 2.10.
Por lo que puedo ver, no hay forma de que habilite [SuppressMessage] en Gendarme (en 2.8). Agarré la última fuente de GitHub, porque no estaba funcionando como se describe.
SupressMessageEngine está allí en el código, y hay pruebas que lo ejercen a través de una anulación manual de Runner.Engines.Subscribe. Pero el [EngineDependency (typeof (SuppressMessageEngine))] no se aplica a todas las reglas compiladas, que es cómo se suscribe cuando realmente se ejecuta Gendarme.
También miré la fuente para encontrar una manera de suscribirme siempre a un motor en particular a través de config, pero no hay ninguno.
Podría estar equivocado, pero parece un descuido que olvidaron volver atrás y aplicar los atributos apropiados de EngineDependency.
La única "solución alternativa" que se me ocurre es escribir una regla personalizada que, cuando se invoca, agrega una suscripción SuppressMessageEngine y no hace nada más. Hacky sí, pero esto debería trabajo basado en lo que he visto en su código.
FYI - Acabo de implementar esto. Es necesario crear su propia regla personalizada, Mono.Cecil importación y Gendarme.Framework y el marco .NET objetivo de 3,5
using Gendarme.Framework;
using Gendarme.Framework.Engines;
namespace MyRules
{
[Problem("Gendarme devs forgot to attribute rules with SuppressMessageEngine")]
[Solution("Include this rule")]
[EngineDependency(typeof(SuppressMessageEngine))]
public class AddSuppressMessageSupportRule : Rule {}
}
Lamentablemente, esto no va a tirar en los atributos de FxCopCompatibility que son allí (es decir, un SupressMessage para una regla de FxCop que coincida con una regla de Gendarme también se suprimirá la regla de Gendarme), pero al menos le permite usar los nombres de Gendarme para suprimir.
Como ya se señaló, la versión 2.10 admite el atributo [SuppressMessage].
Por ejemplo, para suprimir la regla AvoidNonAlphanumericIdentifierRule, hacer esto:
[SuppressMessage("Gendarme.Rules.Naming", "AvoidNonAlphanumericIdentifierRule")]
protected void Application_Start()
{
...
}
Tenga en cuenta que es necesario especificar el nombre de la asamblea en la que vive la regla ... en este caso, AvoidNonAlphanumericIdentifierRule vive en Gendarme. Rules.Naming.dll. La lista completa de reglas y sus nombres de ensamblado son here.
- 1. ¿Qué regla desea que tenga FxCop/Gendarme?
- 2. Defectos con PipedInputStream/PipedOutputStream
- 3. Software embebido Tasa de defectos
- 4. ¿Qué es lo mejor para el seguimiento de la tasa de defectos? Defectos por KLOC?
- 5. software de seguimiento de problemas/defectos
- 6. defectos de implementación android java ... ¿están documentados?
- 7. ¿Cómo suprimir los encabezados de tabla completamente en jQuery DataTables?
- 8. Cómo suprimir la salida
- 9. ¿Cómo suprimir Javascript lienzo
- 10. ¿Cómo suprimir cookie de .Net
- 11. ¿Debo suprimir CA1062: validar los argumentos de los métodos públicos?
- 12. ¿Cómo puedo suprimir páginas en blanco en los informes SQL?
- 13. Software de grabación de pantalla para capturar defectos de software
- 14. Exportación de datos de defectos de HP QC a Excel
- 15. ¿Cómo puedo suprimir los cuadros de diálogo de los mensajes de error de Delphi DataSnap?
- 16. ¿Cómo suprimir una advertencia de StyleCop?
- 17. Resharper: ¿Cómo suprimir los errores de inspección resultantes de los hacks de CSS?
- 18. Suprimir los nombres de directorio enumerados con DIR
- 19. Cómo suprimir mensajes de advertencia de cast()
- 20. Suprimir los errores de "permiso denegado" en Javascript
- 21. Suprimir salida
- 22. java.util.logging: cómo suprimir la línea de fecha
- 23. Cómo suprimir la advertencia de MSBuild específica
- 24. Suprimir todos los resultados de salida, excepto errores y advertencias
- 25. ¿Puedes suprimir los mensajes de activos cuando sigues el desarrollo.log?
- 26. suprimir los valores duplicados en el grupo, SSRS
- 27. detectar y suprimir los errores que cargan archivo javascript
- 28. Cómo suprimir subinformes vacíos en SSRS 2008
- 29. Suprimir advertencia para rsOtraslappingReportItems
- 30. LaTeX suprimir salto de página
Se debe tener en cuenta que el ensamblado debe compilarse con el símbolo 'CODE_ANALYSIS' definido [para que esto funcione] (http://www.mono-project.com/Gendarme.FAQ#Why_are_defects_decorated_using_.5BSuppressMessage.5D_attributes_still_showing_in_my_reports_.3F) –
Además, las últimas versiones agregan compatibilidad FxCop, por lo que si ya tiene un SuppressMessage de FxCop y tiene una regla equivalente en Gendarme, el mensaje será suprimido. –