ASP.NET - Literal, hard-coded string found in code

   
Vista:

Literal, hard-coded string found in code

Publicado por Wendy Martinez (1 intervención) el 07/10/2009 18:48:59
Hola a todos.
Hj estado buscando la solucion a este probelma y la verdad ya no se como hacerle, mira estoy programando en c# utilizando Visual Studio 2005 y estoy usando una herramienta de inspección que se llama DevPartner que es para mejorar la estructura de mi código y me detecta el siguiente problema:

Literal, hard-coded string found in code

Trigger: Detected Literal, hard-coded, string in code [Occurrences: 1]
Original Source Line: comando.Parameters["@idproyecto"].Value =Idproyecto;

y me brinda una opción para repararlo:

Repair

Add a resource file to your project and place this literal string in this resource file. The resource file should contain the literal hard-coded string values, bitmap (.bmp), icon (.ico), or cursor images (.cur) images and other data. Use the ResourceManager class to retrieve the information such as literal strings from the resource file.

The following example code uses the ResourceManager class to retrieve a string literal:

Visual C# .NET example:

ResourceManager rm = new ResourceManager("MyLocalizedData", this.GetType().Assembly);
string foo = rm.GetString("string1");

pero la verdad es que no como aplicarla a mi código.Si pudiera alguien ayudarme se los agradeceria mucho, le envio la parte del codigo de mi proyecto.

public void cargaDescripcion2(Label descrip2)
{
sqlcon = new SqlConnection(cadena);
sqlcon.Open();
string query = "Select descrip from [dbo].[Tbl.Proyecto] where Id_Proyecto=@idproyecto";
SqlCommand comando = new SqlCommand(query, sqlcon);

comando.Parameters.Add("@idproyecto", SqlDbType.Int);
comando.Parameters["@idproyecto"].Value =Idproyecto;

SqlDataReader infMicro = comando.ExecuteReader();
if (infMicro.HasRows)
{
infMicro.Read();
descrip2.Text = infMicro["Descripcion2"].ToString();
}
infMicro.Close();
sqlcon.Close();
comando.Connection.Close();
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Literal, hard-coded string found in code

Publicado por Leonardo (52 intervenciones) el 09/10/2009 19:08:42
Buenas tardes Wendy, El problema que te está marcando el DevPartner consiste en que estás colocando directamente una cadena para especificar el nombre del parámetro ("@idproyecto") y te sugiere que hagas uso de algún archivo de configuración para evitar esto... así, si en algún momento el nombre del parámetro cambiara pues sólo tendrías que modificar este archivo de recursos en lugar de todas las páginas donde haces referencia... Otro ejemplo que puede ejemplificar más este tipo de programación es el referente a los string de conexión... en lugar de poner algo como esto:

stringCnn = "Data Source=sqlexpress;Initial Catalog=master;User ID=user;Password=password;Pooling=true" providerName="System.Data.SqlClient"";

lo que se recomienda hacer es utilizar el archivo web.config para almacenar estas cadenas:

string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["stringCnn"].ConnectionString;

y en el archivo web.config tener algo como esto:

<connectionStrings>
<add name="stringCnn" connectionString="Data Source=sqlexpress;Initial Catalog=master;User ID=user;Password=password;Pooling=true" providerName="System.Data.SqlClient""/>
</connectionStrings>

Finalmente, debes tomar los resultados que arroja DevParner como SUGERENCIAS, esto no quiere decir que todo tu código está mal. Trata de corregir aquellos detalles de alto impacto (como seguridad) y deja aparte los menos relevantes.

Saludos.

Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar