PVS-Studia nunc est in Chocolatey: iniecta Chocolatey de sub Azure DevOps

PVS-Studia nunc est in Chocolatey: iniecta Chocolatey de sub Azure DevOps
Pergimus ad PVS-Studium utendo commodius. Analystor noster nunc praesto est in Chocolatey, procurator sarcina pro Fenestra. Credimus hoc facilius PVS-Studii instruere, praesertim, in servitiis nubilum. Ne longius discedamus, codicem eiusdem Chocolatey cohibeamus. Caeruleus DevOps aget ut ratio CI.

Hic est index aliorum articulorum nostrorum in themate integrationis cum systematis nubili:

Primum articulum de integratione cum Azure DevOps observandum censeo, quoniam in hoc casu nonnulla puncta omittuntur ut non duplicentur.

So, Heroes hujus articuli ;

PVS Studio, static codice analysis instrumentum destinatur ad errores cognoscendos et vulnerabilitates potentiales in programmatibus in C, C++, C# et Java scripta. Currit in Fenestra 64-bit, Linux, et macOS systemata, et codicem ad 32 frenum, 64 frenum, et infixa tabulata ARM resolvere potest. Si hoc primum tuum est analysin codicem statarium conatur ad incepta tua reprimendam, commendamus ut te ipsum persuescas articulus quomodo cito perspicias admonitiones PVS-Studiae iucundas et facultates huius instrumenti aestimandas.

parma caerulea DevOps - Statuto nubis officia quae totam processum evolutionis coniunctim operiunt. Hoc tribunal comprehendit instrumenta qualia sunt Azure Pipelines, Tabulae Azure, artificia Azure, Azure Repos, Testium Azure Consilia, quae permittunt ut accelerare processum creandi programmandi et eius qualitatem meliorandi.

Chocolatey fons aperta sarcina procurator Windows est. Propositum consilii est automate totam vitam software automate ab institutione ad updating et uninstallation in Fenestra systemata operante.

De usura Chocolatey

Potes videre quomodo ipsum inaugurationi villici in hac re instituere Link. Complete documenta installing analyser is available at Link Vide institutionem utens in sarcina Chocolatey procurator sectionem. Pauca inde nonnulla repetam.

Mandatum ut novam versionem analyser instituat:

choco install pvs-studio

Mandatum ut certam versionem in sarcina PVS-Studii instituat:

choco install pvs-studio --version=7.05.35617.2075

Defalta, solum nucleus analystoris, Core componentis, inauguratur. Cetera vexilla (Standalone, JavaCore, IDEA, MSVS2010, MSVS2012, MSVS2013, MSVS2015, MSVS2017, MSVS2019) utens parametri sarcinam transiri possunt.

Exemplum mandati quod analysrem instituet cum plugin pro Visual Studio MMXIX:

choco install pvs-studio --package-parameters="'/MSVS2019'"

Nunc inspiciamus exemplum convenientis usus analysris sub Azure DevOps.

tionibus

Me admoneam te de talibus quaestionibus separatum esse ut rationem perscriptum, aedificatum Pipeline creans et rationem tuam synchronum cum consilio in repositorio GitHub sito. articulus. Propositum nostrum statim inscriptionem schematis de configuratione incipiet.

Primum, felis launchem faciamus, indicans nos solum ad mutationes in deducendas dominus ramus;

trigger:
- master

Deinde opus est eligere machinam virtualem. Nunc enim Microsoft hosted agente erit cum Windows Servo MMXIX et Visual Studio MMXIX;

pool:
  vmImage: 'windows-latest'

Transeamus ad corpus configurationis file (obstructionum gressus). Quamvis quod in virtualem machinam programmatum arbitrarium instituere non possis, vas Docker non addidi. Chocolatey extensionem addere possumus pro DevOpibus caeruleis. Hoc facere, eamus Link. Click Pervenit liberate. Deinde, si iam permissus es, rationem tuam simpliciter elige, et si non, idipsum ex auctoritate fac.

PVS-Studia nunc est in Chocolatey: iniecta Chocolatey de sub Azure DevOps

Hic eligere debes ubi extensionem adde et pyga premes Install.

PVS-Studia nunc est in Chocolatey: iniecta Chocolatey de sub Azure DevOps

Post prospere institutionem preme " Perge ad ordinationem:

PVS-Studia nunc est in Chocolatey: iniecta Chocolatey de sub Azure DevOps

Potes nunc videre exemplum Chocolatey in fenestra negotium configuratione file, cum edere azure-pipelines.yml:

PVS-Studia nunc est in Chocolatey: iniecta Chocolatey de sub Azure DevOps

Click in Chocolatey et vide indicem agrorum:

PVS-Studia nunc est in Chocolatey: iniecta Chocolatey de sub Azure DevOps

Hic opus est eligere install in campum cum iugis. IN' Nuspec Tabularii Nomen indicant nomen sarcina requiritur - pvs-studio. Si versionem non definias, tardus instituetur qui nobis omnino convenit. Sit scriptor premere puga adde et generatum negotium in configuration file videbimus.

steps:
- task: ChocolateyCommand@0
  inputs:
    command: 'install'
    installPackageId: 'pvs-studio'

Deinde transeamus ad praecipuam partem fasciculi nostri:

- task: CmdLine@2
  inputs:
    script: 

Nunc opus est ut limam cum analysi licentia creare. Hic PVSNAME и PVSKEY - variabilium nomina quorum valores in uncinis definimus. PVS-Studii rationem aperient ac licentiae clavem. Ut bona sua ponas, tabulam aperi Variabiles-> Novae variabiles. Faciamus variables PVSNAME nam et login PVSKEY pro clavis analyser. Noli oblivisci ut reprehendo arca archa Hoc secretum valorem serva ad PVSKEY. Codicem mandatum:

сall "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe" credentials 
–u $(PVSNAME) –n $(PVSKEY)

Faciamus consilium utens fasciculi vespertilionis sitae in promptuario:

сall build.bat

Faceremus folder ubi lima cum proventus analyser reponetur:

сall mkdir PVSTestResults

In analyzing sit amet project:

сall "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe" 
–t .srcchocolatey.sln –o .PVSTestResultsChoco.plog 

Nostram relationem ad HTML formam convertimus utentes utilitates PlogСonverter:

сall "C:Program Files (x86)PVS-StudioPlogConverter.exe" 
–t html –o PVSTestResults .PVSTestResultsChoco.plog

Nunc opus est tibi negotium creare ut famam imposuisti.

- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: PVSTestResults
    artifactName: PVSTestResults
    condition: always()

Configurationis file integram sic spectat:

trigger:
- master

pool:
  vmImage: 'windows-latest'

steps:
- task: ChocolateyCommand@0
  inputs:
    command: 'install'
    installPackageId: 'pvs-studio'

- task: CmdLine@2
  inputs:
    script: |
      call "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe" 
      credentials –u $(PVSNAME) –n $(PVSKEY)
      call build.bat
      call mkdir PVSTestResults
      call "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe" 
      –t .srcchocolatey.sln –o .PVSTestResultsChoco.plog
      call "C:Program Files (x86)PVS-StudioPlogConverter.exe" 
      –t html –o .PVSTestResults .PVSTestResultsChoco.plog

- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: PVSTestResults
    artifactName: PVSTestResults
    condition: always()

Sit scriptor click Save->Save->Run currere negotium. Renuntiationem demus eundo ad munia tab.

PVS-Studia nunc est in Chocolatey: iniecta Chocolatey de sub Azure DevOps

Consilium Chocolatey tantum 37615 lineas ex C # codice continet. Intueamur aliquos errores invenisse.

Test eventus

Monitum N1

Analyser monitus: V3005 Provisor variabilis sibi ipsi tribuitur. CrytpoHashProviderSpecs.cs 38

public abstract class CrytpoHashProviderSpecsBase : TinySpec
{
  ....
  protected CryptoHashProvider Provider;
  ....
  public override void Context()
  {
    Provider = Provider = new CryptoHashProvider(FileSystem.Object);
  }
}

Analystor assignationem variabilis sibi deprehendit, quae sensum non facit. Verisimile est, pro una harum variabilium alia esse alia. Bene, vel hoc typo, et extra assignationem simpliciter removeri potest.

Monitum N2

Analyser monitus: V3093 Auctor '&' operans utrumque aestimat. Fortasse brevis-circuitus '&&' loco uti debet. Platform.cs 480

public static PlatformType get_platform()
{
  switch (Environment.OSVersion.Platform)
  {
    case PlatformID.MacOSX:
    {
      ....
    }
    case PlatformID.Unix:
    if(file_system.directory_exists("/Applications")
      & file_system.directory_exists("/System")
      & file_system.directory_exists("/Users")
      & file_system.directory_exists("/Volumes"))
      {
        return PlatformType.Mac;
      }
        else
          return PlatformType.Linux;
    default:
      return PlatformType.Windows;
  }
}

Operator difference & ex operator && quod si sinistrum elocutionis falsum,eritque ius tamen iniri, quod in hoc casu modum supervacuum vocat system.directory_exists.

In fragmento considerato, hoc vitium minoris est. Ita conditio haec optimized est substituendo & operante cum && operante, sed ex parte practica, haec nihil afficit. In aliis autem casibus, confusio inter & & && gravia problemata causare potest, cum dextra expressionis latus cum valoribus incorrectis invalidis tractatur. Exempli gratia in nostra collectione errorum; identified per V3093 diagnosticaibi casus;

if ((k < nct) & (s[k] != 0.0))

Etiam si index k falsa, ad elementum ordinata adhibebitur. Quam ob rem exceptio mittetur IndexOutOfRangeException.

Admonitiones N3, N4

Analyser monitus: V3022 Vera locutio semper est. InteractivePrompt.cs 571
Analyser monitus: V3022 Vera locutio semper est. InteractivePrompt.cs 571

public static string 
prompt_for_confirmation(.... bool shortPrompt = false, ....)
{
  ....
  if (shortPrompt)
  {
    var choicePrompt = choice.is_equal_to(defaultChoice) //1
    ?
    shortPrompt //2
    ?
    "[[{0}]{1}]".format_with(choice.Substring(0, 1).ToUpperInvariant(), //3
    choice.Substring(1,choice.Length - 1))
    :
    "[{0}]".format_with(choice.ToUpperInvariant()) //0
    : 
    shortPrompt //4
    ? 
    "[{0}]{1}".format_with(choice.Substring(0,1).ToUpperInvariant(), //5
    choice.Substring(1,choice.Length - 1)) 
    :
    choice; //0
    ....
  }
  ....
}

In hoc casu, est aliena logica post operationem operantis temarii. Propius inspiciamus: si conditio numero 1 notata occurrit, tunc ad condicionem 2 movebimus, quae semper est. verumSi conditio 3 falsa evadit, tum ad lineam numero 1, in qua etiam semper verum, quod significat lineam 5 exsecutioni mandari. Ita condiciones cum commento 0 notatae numquam complebuntur, quae prorsus non possunt esse logica operandi quam programmator expectat.

Monitum N5

Analyser monitus: V3123 Fortasse opera '?:' aliter operante quam expectabatur. Prioritas eius est inferior quam prioritas aliorum operariorum in statu suo. Options.cs 783

private static string GetArgumentName (...., string description)
{
  string[] nameStart;
  if (maxIndex == 1)
  {
    nameStart = new string[]{"{0:", "{"};
  }
  else
  {
    nameStart = new string[]{"{" + index + ":"};
  }
  for (int i = 0; i < nameStart.Length; ++i) 
  {
    int start, j = 0;
    do 
    {
      start = description.IndexOf (nameStart [i], j);
    } 
    while (start >= 0 && j != 0 ? description [j++ - 1] == '{' : false);
    ....
    return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1);
  }
}

Diagnostica ad lineam laboravit:

while (start >= 0 && j != 0 ? description [j++ - 1] == '{' : false)

Cum variabilis j supra paucae lineae initialized ad nihilum, operator ternarius reddet valorem falsum,. Qua condicione corpus ansa semel tantum fiet. Mihi videtur hoc fragmentum codicis omnino non operari sicut programmator intendit.

Monitum N6

Analyser monitus: V3022 [CWE-571] Expressio 'installedPackageVersions.Count != 1' semper verum est. NugetService.cs 1405

private void remove_nuget_cache_for_package(....)
{
  if (!config.AllVersions && installedPackageVersions.Count > 1)
  {
    const string allVersionsChoice = "All versions";
    if (installedPackageVersions.Count != 1)
    {
      choices.Add(allVersionsChoice);
    }
    ....
  }
  ....
}

Novus hic conditio nidificatur: installedPackageVersions.Count! = 1quae semper erit verum. Saepe talis admonitio errorem logicum in codice indicat, et in aliis casibus simpliciter notificat redundantem recognitionem.

Monitum N7

Analyser monitus: V3001 There are identical sub-expressions 'mandArgumenta. continet ad laevam et ad dextram' || operator. Argumenta Utility.cs 42

public static bool arguments_contain_sensitive_information(string
 commandArguments)
{
  return commandArguments.contains("-install-arguments-sensitive")
  || commandArguments.contains("-package-parameters-sensitive")
  || commandArguments.contains("apikey ")
  || commandArguments.contains("config ")
  || commandArguments.contains("push ")
  || commandArguments.contains("-p ")
  || commandArguments.contains("-p=")
  || commandArguments.contains("-password")
  || commandArguments.contains("-cp ")
  || commandArguments.contains("-cp=")
  || commandArguments.contains("-certpassword")
  || commandArguments.contains("-k ")
  || commandArguments.contains("-k=")
  || commandArguments.contains("-key ")
  || commandArguments.contains("-key=")
  || commandArguments.contains("-apikey")
  || commandArguments.contains("-api-key")
  || commandArguments.contains("-apikey")
  || commandArguments.contains("-api-key");
}

Programmator qui hanc sectionem codicis scripsit et duas ultimas lineas conglutinavit et eas recensere oblitus est. Propterea, Chocolatey usores parametri adhibere non potuerunt apikey duobus modis. Parametris supra similes, sequentes optiones offerre possum:

commandArguments.contains("-apikey=");
commandArguments.contains("-api-key=");

Errores exemplaris crustulum in magna facultate apparentis citius aut serius in aliquo project cum magna copia source codice, et unum instrumentorum optimorum ad pugnandum analysin staticam est.

PS Et, ut semper, hic error apparet in fine lineae conditionis :). Vide publicationem "Ultima linea effectus".

Monitum N8

Analyser monitus: V3095 [CWE-476] Obiectum "installedPackage" ante adhibitum est contra nullum comprobatum. Check lines: 910, 917. NugetService.cs 910

public virtual ConcurrentDictionary<string, PackageResult> get_outdated(....)
{
  ....
  var pinnedPackageResult = outdatedPackages.GetOrAdd(
    packageName, 
    new PackageResult(installedPackage, 
                      _fileSystem.combine_paths(
                        ApplicationParameters.PackagesLocation, 
                        installedPackage.Id)));
  ....
  if (   installedPackage != null
      && !string.IsNullOrWhiteSpace(installedPackage.Version.SpecialVersion) 
      && !config.UpgradeCommand.ExcludePrerelease)
  {
    ....
  }
  ....
}

Classic error: quod primum installedPackage adhibetur et sedatus est nullum. Haec diagnostica nobis narrat circa unam ex duabus quaestionibus in programmatis: vel installedPackage numquam adaequare nullumquae dubia est, ac deinde perscriptio superuacua est, aut in codice gravius ​​errorum potentialiter obtinere potuimus — conatum accedens ad nullam comparationem.

conclusio,

Aliud igitur parvum gradum cepimus - nunc usu PVS-Studii facilior et commodior facta est. Libet etiam dicere Chocolatey bonam sarcinam praepositam esse cum paucitate errorum in codice, qui etiam pauciores esse potuit cum PVS-Studio uteretur.

Invitamus te скачать et proba PVS-Studia. Regularis usus stabilis analysris qualitatem et constantiam codicis operae tuae augebit et adiuvabit ne plures nullus dies vulnerabilities ".

PS

Ante publicationem articulum ad tincidunt Chocolatey misimus, et bene recepimus. Aliquid criticum non invenimus, sed illi, exempli gratia, probaverunt cimex affinem clavis "api-key" invenimus.

PVS-Studia nunc est in Chocolatey: iniecta Chocolatey de sub Azure DevOps

Si hunc articulum communicare cum auditorio Anglico loquentem vis, sis utere nexus translationis: Vladislav Stolyarov. PVS-Studium nunc est in Chocolatey: Reprehendo Chocolatey sub caeruleo DevOps.

Source: www.habr.com

Add a comment